你好我有这样的代码:
try
{
// Here I call my external function
do_some_work()
}
catch(Exception $e){}
问题是:如果do_some_work()出现问题并产生错误,那么try catch会隐藏错误吗?
答案 0 :(得分:12)
PHP中有两种类型的错误。有例外,也有错误。
try..catch
将处理异常,但不会处理错误。
为了捕获PHP错误,您需要使用set_error_handler()
function。
简化事情的一种方法是让set_error_handler()
在遇到错误时抛出异常。如果你这样做,你需要谨慎行事,因为它有可能造成各种麻烦,但这将是让try..catch
处理所有PHP错误的一种方法。
答案 1 :(得分:7)
如果do_some_work()
抛出异常,它将被捕获并被忽略。
try / catch构造对标准PHP错误没有影响,仅对异常有效。
答案 2 :(得分:7)
产生致命错误
不,捕捉不能捕捉致命错误。你甚至不能使用错误处理程序。
如果您想捕获所有其他错误,请查看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();