尝试并捕获语法错误

问题描述 投票:0回答:2

如果我有以下代码:

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 语句会出现错误,为什么我需要 try 和 catch,我可以写这样的东西:

if(//something is false) {

  $error->track_error();
 
}

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

这可能吗?

php exception try-catch
2个回答
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)");
});

0
投票
try {
    $result = eval($code);
} catch (ParseError $e) {
    // Report error somehow
    echo "Syntax error detected!"
}
© www.soinside.com 2019 - 2024. All rights reserved.