如何捕获PHP7和PHP8中的致命错误?

如何捕获PHP7和PHP8中的致命错误?,php,error-handling,try-catch,Php,Error Handling,Try Catch,我有一个PHP 7脚本,它基本上实现了以下功能: 试试看{ $class=getClassFromSomewhere(); } 捕获(错误$e){ 如果(“未找到类“Main”==$e->getMessage()){ echo“运行”php generate main class“以生成类”; 出口 }否则{ 扔$e; } } 需要明确的是:如果我要查找的类是“Main”并且找不到,我必须显示文本,否则它应该抛出异常 它在PHP7中运行良好,但PHP8没有捕捉到错误。相反,它显示: Fatal

我有一个PHP 7脚本,它基本上实现了以下功能:

试试看{
$class=getClassFromSomewhere();
}
捕获(错误$e){
如果(“未找到类“Main”==$e->getMessage()){
echo“运行”php generate main class“以生成类”;
出口
}否则{
扔$e;
}
}
需要明确的是:如果我要查找的类是“Main”并且找不到,我必须显示文本,否则它应该抛出异常

它在PHP7中运行良好,但PHP8没有捕捉到错误。相反,它显示:

Fatal error: Uncaught Error: Class "Main" not found in ...

如何以向后兼容的方式捕获PHP8中的“未找到类”致命错误?

唯一的区别似乎是PHP8在类名周围使用双引号-

Class "Main" not found
而它以前(在您当前的代码中)使用单引号

Class 'Main' not found

您也可以在尝试代码()之前检查类是否存在,这可能比导致错误更干净。

唯一的区别似乎是PHP8在类名周围使用双引号-

Class "Main" not found
而它以前(在您当前的代码中)使用单引号

Class 'Main' not found

您也可以在尝试代码()之前检查类是否存在,这可能比导致错误更干净。

getclassfromwhere()
中的代码是什么?刚刚用PHP8在线尝试过,消息是
class“Main”找不到
-注意引号。您正在测试
“找不到类'Main'”
可能值得一读@NigelRen,没错!PHP7中是单引号,PHP8中是双引号。请将您的评论转换为答案,以便我可以接受!
getclassfromAnywhere()
中的代码是什么?刚刚用PHP8在线试用过,消息是
Class“Main”找不到
-注意引号。您正在测试
“找不到类'Main'”
可能值得一读@NigelRen,没错!PHP7中是单引号,PHP8中是双引号。请将您的评论转换为答案,以便我可以接受!