【发布时间】:2018-08-21 11:08:55
【问题描述】:
从 PHP 7 开始,可以通过捕获 Error 类或 Throwable 接口来捕获 Fatal Errors,但由于某种原因,当“致命错误:未找到特征”被触发时,我无法做到这一点.
try {
class Cars {
use Price;
}
} catch (Error $e) {
echo $e->getMessage(); // Output : Fatal error: Trait 'Price' not found in [..] on line [..]
}
没有发现错误!!所以我想出了一个解决方案
try {
if (trait_exists('Price')) {
class Cars{
use Price;
}
} else {
throw new Error('Trait Price not found');
}
} catch (Error $e) {
echo $e->getMessage(); // Output : Trait Price not found
}
为什么第一个示例中的 Fatal Error 没有被捕获?
我在第二个例子中的方法是唯一的方法吗?
【问题讨论】:
-
你为什么要在你的代码中捕捉到它?在尝试使用某个特征之前,您不应该知道它是否存在吗?如果您收到该错误,则您的代码已损坏,您应该确保特征存在或从代码中删除
use。
标签: php traits fatal-error