【问题标题】:cannot catch exception in php无法在php中捕获异常
【发布时间】:2018-01-11 10:18:00
【问题描述】:

我编写了一个非常简单的代码来捕获 PHP 中的异常,但它仍然在页面上显示错误。我无法理解为什么它没有捕捉到异常。

<?php

try
{
    session_start();

    echo    ($counter);
}
catch(Exception $e)
{
    echo "caught exception";
}

?>

【问题讨论】:

  • 这也不例外。这是一个致命错误。 try catch 块无法处理致命错误
  • 所以异常类不会捕获致命错误?这就是他们的目的,对吧?
  • 是的,异常类不会捕获致命错误
  • @yivi 我不认为这个问题解释了为什么异常不会捕获致命错误?

标签: php exception try-catch


【解决方案1】:

在 php 7 之前,您只能捕获异常,不能捕获错误,但从 php 7 开始,您有一个名为 \Throwable 的新接口,它比异常更通用,并且引入了实现 Throwable 的 Error 类

http://php.net/manual/en/class.throwable.php

目前有两种 Throwable 对象,即 Exceptions 和 Errors, 所以现在你也可以捕获错误, 但是致命错误仍然会破坏您的代码

你可以试试

<?php

try
{
    session_start();

    echo    ($counter);
}
catch(\Exception $e)
{
    echo "caught exception";
}
catch(\Error $e)
{
    echo "caught error";
}

或者你的车试试

try
{
    session_start();

    echo    ($counter);
}
catch(\Throwable $e)
{
    echo "caught exception";
}

【讨论】:

    猜你喜欢
    • 2014-03-22
    • 2010-10-29
    • 1970-01-01
    • 2021-08-07
    • 2021-10-14
    • 2019-11-27
    • 2014-05-02
    • 2017-03-15
    相关资源
    最近更新 更多