PHP Uncaught异常提供了比捕获异常更多的详细信息

时间:2016-05-11 17:54:22

标签: php symfony exception logging exception-handling

我构建了一些api端点,并尝试处理日志记录异常,因此我故意删除数据库并运行端点以获取PDOException。

我的问题是,如果我没有发现异常,当我通过邮递员运行端点时,它会向我显示更详细的消息,堆栈跟踪等(约1000行),

但是如果我用try catch阻止这样的异常

catch (\Exception $exception) {
    print_r($exception->__toString());
    print_r("\n\n");

    die;
}

它的细节要少得多。这是为什么?无论如何打印出我们没有发现异常的相同数据?

2 个答案:

答案 0 :(得分:4)

你拥有所有这些数据。异常对象有很多方法:

try {
    // something throwing exception
} catch (\Exception $e) {
    echo $e->getCode() . "\n";
    echo $e->getFile() . "\n";
    echo $e->getLine() . "\n";
    echo $e->getMessage() . "\n";
    echo $e->getTraceAsString() . "\n";
}

详细了解Exception课程:
http://php.net/manual/en/class.exception.php

答案 1 :(得分:1)

你总是可以在catch块中抛出异常,让PHP处理。这将允许您对异常执行某些操作,然后继续默认行为。

catch (\Exception $exception) {
    // Do something with the exception

    throw $exception;
}