当前位置:  开发笔记 > 编程语言 > 正文

从PHP扩展中抛出异常而不是错误

如何解决《从PHP扩展中抛出异常而不是错误》经验,为你挑选了1个好方法。

另一个同事和我一直在大量修改PHP扩展动物园管理员,但有一件事真正困扰我的是PHP错误的VS异常的依赖.

原始资料来源:http://github.com/andreiz/php-zookeeper/blob/master/php_zookeeper.c#L209

相反,抛出Zookeeper_NodeNotExists或类似的东西会更好,除了我不知道c中的API调用是什么.

我已经尝试使用谷歌搜索并在PHP语言中获得了一组例外的异常,PHP手册似乎没有提及它们,我不记得哪些PHP库存扩展为您抛出异常.那里有PHP/Zend c API的替代文档来源吗?



1> David..:

我查看了PHP 5.3的Sqlite扩展的源代码,特别是Sqlite.c,我知道它引发了异常并找到了

通过sqlite - https://github.com/php/php-src/blob/PHP-5.3/ext/sqlite/sqlite.c#L46

#include "zend_exceptions.h"

在zend_exceptions.h中,看起来可以通过简单的调用来引发RuntimeException

zend_throw_exception(NULL, "Some text")

如下所述https://github.com/php/php-src/blob/PHP-5.3/Zend/zend_exceptions.h#L43

Sqlite3扩展使用它如下:

zend_throw_exception(zend_exception_get_default(TSRMLS_C), "Already initialised DB Object", 0 TSRMLS_CC);

我推断zend_exception_get_default()获取RuntimeException的引用/句柄,第二个参数是Exception消息,所有其他工作都被委托.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有