你好,我有这样的代码:
try
{
// Here I call my external function
do_some_work()
}
catch(Exception $e){}
问题是:如果do_some_work()出现问题并产生错误,这个try catch会隐藏错误吗?
PHP 中有两种错误类型,分别为异常(exceptions)和错误(errors)。
try..catch
可以处理异常,但不能处理错误。
要捕获 PHP 错误,需要使用 set_error_handler()
函数。
简化操作的一种方式是,在遇到错误时让 set_error_handler()
抛出一个异常。如果这样做,需要小心谨慎,因为它可能会引起各种问题,但这是一种让 try..catch
处理所有 PHP 错误的方法。
产生致命错误
不,catch语句无法捕获致命错误。即使使用错误处理程序也不行。
如果您想捕获所有其他错误,请查看ErrorException
以及它与set_error_handler
一起使用的相关内容:
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
/* Trigger exception */
strpos();
do_some_work()
抛出异常,它将被捕获并忽略。
set_error_handler()
无法处理致命错误。 - Rodolpho Freire