PHP尝试捕获异常

时间:2011-10-11 09:27:17

标签: php exception exception-handling

你好我有这样的代码:

try
{
    // Here I call my external function
    do_some_work()
}
catch(Exception $e){}

问题是:如果do_some_work()出现问题并产生错误,那么try catch会隐藏错误吗?

3 个答案:

答案 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();