【问题标题】:PHP try catch exceptionsPHP尝试捕获异常
【发布时间】: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


    【解决方案1】:

    PHP 中有两种类型的错误。有例外,也有错误。

    try..catch 会处理异常,但不会处理错误。

    为了捕捉 PHP 错误,您需要使用set_error_handler() function

    简化事情的一种方法可能是让set_error_handler() 在遇到错误时抛出异常。如果你这样做,你需要小心行事,因为它有可能导致各种麻烦,但这是让try..catch 处理所有 PHP 错误的一种方法。

    【讨论】:

    • 请注意@hakre 在他的回答中说,set_error_handler() 无法处理 致命错误
    【解决方案2】:

    如果do_some_work() 抛出异常,则会被捕获并忽略。

    try/catch 结构对标准 PHP 错误没有影响,只对异常有影响。

    【讨论】:

    【解决方案3】:

    产生致命错误

    不,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();
    

    【讨论】:

      猜你喜欢
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 2020-10-11
      • 1970-01-01
      相关资源
      最近更新 更多