php – 我应该使用哪些类条目从C扩展中抛出非默认异常?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 我应该使用哪些类条目从C扩展中抛出非默认异常?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的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");

脚本宝典总结

以上是脚本宝典为你收集整理的php – 我应该使用哪些类条目从C扩展中抛出非默认异常?全部内容,希望文章能够帮你解决php – 我应该使用哪些类条目从C扩展中抛出非默认异常?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。