如何在E_NOTICE上退出php?

rsk*_*k82 7 php error-handling

通常php脚本在E_NOTICE之后继续运行,有没有办法在函数的上下文中将其提升为致命错误,也就是说我只需要在我的函数中退出通知,而不是在核心php函数上退出,这是全局的.

Pek*_*ica 12

您可以创建一个自定义错误处理程序来捕获E_NOTICEs.

这是未经测试的,但应该朝着正确的方向前进:

function myErrorHandler($errno, $errstr, $errfile, $errline)
 {
  if ($errno == E_USER_NOTICE)
   die ("Fatal notice");
  else
   return false; // Leave everything else to PHP's error handling

 }
Run Code Online (Sandbox Code Playgroud)

然后,set_error_handler()在输入函数时将其设置为新的自定义错误处理程序,并在离开时恢复PHP的错误处理程序:

function some_function()
{

// Set your error handler
$old_error_handler = set_error_handler("myErrorHandler");

... do your stuff ....

// Restore old error handler
set_error_handler($old_error_handler);

}
Run Code Online (Sandbox Code Playgroud)

  • @Rikudo实际上,OP在哪里提到过`E_USER_NOTICE`? (5认同)