【发布时间】:2017-07-31 17:46:07
【问题描述】:
为什么 PHP 有 preg_last_error() 而不是仅仅抛出错误?
您在通过preg_replace() 执行正则表达式时可能遇到的一些错误会记录到 PHP 错误文件中。其他一些人保持沉默,您必须通过preg_last_error() 检查他们的存在。这是为什么呢?
例如,无效的 REGEX 将发送 PHP 警告。但是不会超过 preg JIT 堆栈限制,检测此错误的唯一方法是检查 preg_last_error() 返回值。
更多关于本主题后面错误的信息PHP PREG_JIT_STACKLIMIT_ERROR - inefficient regex
【问题讨论】:
-
原因本质上是历史原因。 PHP 沿途收集了很多库,这就是为什么错误处理不连贯的原因,就此而言,甚至参数顺序在库之间或多或少是随机的。
-
LSerni 所说的。在一个完美的世界中,所有出错的东西都会抛出异常,或者以统一且可预测的方式设置错误指示器,但我们在 PHP 中没有。它只是一直试图给你一个答案——任何类型的答案!见eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design
标签: php error-handling