尝试并捕获语法错误

时间:2021-01-15 12:54:16

标签: php exception try-catch

如果我有以下代码:

try {

   //call function a
   $object->function_a();

   //call function b
   $object->function_b();

   //call function c
   $object->function_c();

}
catch(Exception $e) {
   
     $error->track_error();
    
}

我如何捕捉语法错误,比如有人将 function_b() 名称更改为不存在的 function_d()。

似乎 try 和 catch 不能捕获语法错误,如果没有 if 语句来检查是否有问题,它就不起作用。

但是如果我可以预料到 if 语句的错误,为什么我需要尝试和捕获,我可以这样写:

if(//something is false) {

  $error->track_error();
 
}

我正在寻找的是会在整个 try 范围内创建异常并跳转到 catch 块的东西,当发生任何 php 错误(包括语法)时,捕获它然后使用 error_get_last() 获取详细信息或db 内错误记录的类似功能。

这可能吗?

1 个答案:

答案 0 :(得分:0)

您可以使用 set_error_handler() 抛出自定义 Exception :

set_error_handler(function(int $errno, string $errstr, string $errfile = '', int $errline = 0) {
    throw new Exception("$errstr ($errfile, line $errline)");
});