php – 我应该使用哪些类条目从C扩展中抛出非默认异常?
发布时间:2020-12-13 13:10:58 所属栏目:PHP教程 来源:网络整理
导读:在我的C扩展中,我可以使用zend_throw_exception向调用函数抛出一个 PHP异常.该函数的第一个参数是zend_class_entry,它指定要抛出的异常类型.我从zend_exceptions.h中的文档中知道,我可以使用zend_exception_get_default()来使用默认的异常类型. 但是,它也说
在我的C扩展中,我可以使用zend_throw_exception向调用函数抛出一个
PHP异常.该函数的第一个参数是zend_class_entry,它指定要抛出的异常类型.我从zend_exceptions.h中的文档中知道,我可以使用zend_exception_get_default()来使用默认的异常类型.
但是,它也说我可以传递派生类.在哪里可以找到派生的内置异常的类条目,例如InvalidArgumentException?
所有例外都在源代码中定义;
php-5.5.15/ext/spl/spl_exceptions.h 并且可以在安装devel包时找到(例如yum install php-devel on fedora); /usr/include/php/ext/spl/spl_exceptions.h 并包含以下内容; extern PHPAPI zend_class_entry *spl_ce_LogicException; extern PHPAPI zend_class_entry *spl_ce_BadFunctionCallException; extern PHPAPI zend_class_entry *spl_ce_BadMethodCallException; extern PHPAPI zend_class_entry *spl_ce_DomainException; extern PHPAPI zend_class_entry *spl_ce_InvalidArgumentException; extern PHPAPI zend_class_entry *spl_ce_LengthException; extern PHPAPI zend_class_entry *spl_ce_OutOfRangeException; extern PHPAPI zend_class_entry *spl_ce_RuntimeException; extern PHPAPI zend_class_entry *spl_ce_OutOfBoundsException; extern PHPAPI zend_class_entry *spl_ce_OverflowException; extern PHPAPI zend_class_entry *spl_ce_RangeException; extern PHPAPI zend_class_entry *spl_ce_UnderflowException; extern PHPAPI zend_class_entry *spl_ce_UnexpectedValueException; 并且可以按照单元测试抛出; zend_throw_exception_ex(spl_ce_InvalidArgumentException,0 TSRMLS_CC,"array size cannot be less than zero"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |