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

标签 php c documentation

<分区>

我和另一位同事一直在大量修改 PHP Zookeeper 扩展,但真正困扰我的是对 PHP 错误与异常的依赖。

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

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

我已经尝试使用谷歌搜索并获得了 PHP 语言异常的聚宝盆结果集,PHP 手册似乎没有提及它们,而且我不记得哪些 PHP 股票扩展为您抛出异常。是否有关于 PHP/Zend c API 的替代文档来源?

最佳答案

我查看了 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 的引用/句柄,第二个参数是异常消息,所有其他工作都被委托(delegate)。

关于php - 从 PHP 扩展中抛出异常而不是错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3937525/

相关文章:

php - codeigniter 的自定义配置文件

c - 如何通过用 C 编写的 cgi-bin 程序检索表单 "POST"数据

c++ - 使用字符串 C,读写字符串

c - 用C语言解析数据格式

documentation - 记录软件项目的好方法和坏方法是什么?

ruby - 使用 Ruby 的 Yard doc 工具,我可以将 Yard 配置为*不*按字母顺序放置方法吗?

r - 可以在 roxygen2 代码块中使用换行符吗?

javascript - 拒绝输入字段中 Alexa 排名小于 x 的网站

php - 在mysql中总计两列

php - php中带有json的特殊字符