如何在 PHP 7 和 8 中捕获致命错误?
How to catch a fatal error both in PHP 7 and 8?
我有一个 PHP 7 脚本,基本上是这样做的:
try {
$class = getClassFromSomewhere();
}
catch(Error $e) {
if ("Class 'Main' not found" == $e->getMessage()) {
echo 'Run "php generate-main-class" to generate the class.'.PHP_EOL;
exit;
} else {
throw $e;
}
}
明确一点:如果我要查找的 class 是“Main”并且无法找到,我必须显示文本,否则它应该会抛出异常。
它与 PHP 7 配合使用效果很好,但 PHP 8 不会捕获错误。相反,它显示:
Fatal error: Uncaught Error: Class "Main" not found in ...
我应该如何以向后兼容的方式在 PHP 8 中捕获“Class 未找到”致命错误?
唯一的区别似乎是 PHP 8 在 class 名称周围使用双引号 -
Class "Main" not found
而之前(如您当前的代码)使用单引号...
Class 'Main' not found
您也可以在尝试代码 () 之前检查 class 是否存在,这可能比导致错误更干净。
我有一个 PHP 7 脚本,基本上是这样做的:
try {
$class = getClassFromSomewhere();
}
catch(Error $e) {
if ("Class 'Main' not found" == $e->getMessage()) {
echo 'Run "php generate-main-class" to generate the class.'.PHP_EOL;
exit;
} else {
throw $e;
}
}
明确一点:如果我要查找的 class 是“Main”并且无法找到,我必须显示文本,否则它应该会抛出异常。
它与 PHP 7 配合使用效果很好,但 PHP 8 不会捕获错误。相反,它显示:
Fatal error: Uncaught Error: Class "Main" not found in ...
我应该如何以向后兼容的方式在 PHP 8 中捕获“Class 未找到”致命错误?
唯一的区别似乎是 PHP 8 在 class 名称周围使用双引号 -
Class "Main" not found
而之前(如您当前的代码)使用单引号...
Class 'Main' not found
您也可以在尝试代码 (