【发布时间】:2011-12-05 03:38:33
【问题描述】:
你好,我有这样的代码:
try
{
// Here I call my external function
do_some_work()
}
catch(Exception $e){}
问题是:如果 do_some_work() 有问题并产生错误,这个 try catch 会隐藏错误吗?
【问题讨论】:
标签: php exception exception-handling
你好,我有这样的代码:
try
{
// Here I call my external function
do_some_work()
}
catch(Exception $e){}
问题是:如果 do_some_work() 有问题并产生错误,这个 try catch 会隐藏错误吗?
【问题讨论】:
标签: php exception exception-handling
PHP 中有两种类型的错误。有例外,也有错误。
try..catch 会处理异常,但不会处理错误。
为了捕捉 PHP 错误,您需要使用set_error_handler() function。
简化事情的一种方法可能是让set_error_handler() 在遇到错误时抛出异常。如果你这样做,你需要小心行事,因为它有可能导致各种麻烦,但这是让try..catch 处理所有 PHP 错误的一种方法。
【讨论】:
set_error_handler() 无法处理 致命错误。
如果do_some_work() 抛出异常,则会被捕获并忽略。
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();
【讨论】: