PHP异常处理问题

时间:2018-09-20 04:26:33

标签: php exception-handling try-catch

我只是想在try-catch块周围放一个算术表达式。

这是我尝试过的:

    try 
    {
        $result = 4/0;
    } 
    catch (Exception $e)
    {
        d($e->getMessage());
    }

但是代替打印$e->getMessage(),它显示的是Internal Server Error Division By Zero,如果我不使用任何try-catch,它会显示类似的内容。

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

您必须使用此:

* !!vue-style-loader!css-loader?{"sourceMap":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{"vue":true,"id":"data-v-2ec75e7e","scoped":false,"hasInlineConfig":false}!less-loader?{"sourceMap":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Footer.vue in ./src/components/main/Footer.vue

To install it, you can run: npm install --save !!vue-style-loader!css-loader?{"sourceMap":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{"vue":true,"id":"data-v-2ec75e7e","scoped":false,"hasInlineConfig":false}!less-loader?{"sourceMap":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./F

PHP手册:http://php.net/manual/en/class.divisionbyzeroerror.php(从try { $result = intdiv(4, 0); } catch(DivisionByZeroError $e) { d($e->getMessage()); } 开始使用)

更新::使用intdiv()-整数除法(从PHP 7开始使用)

答案 1 :(得分:1)

您无法使用常规算法捕获DivisionByZeroError,因为PHP认为它是警告,而不是错误。相反,您需要设置一个错误处理程序来寻找它,例如

function handler($errno, $error) {
    if ($error == "Division by zero") {
        echo "Error $errno! $error\n";
        return;
    }
    // hand processing back to the standard handler
     return false;
}
set_error_handler('handler');
$result = 4/0;

输出:

Error 2! Division by zero

请注意,如果这不是您要查找的错误,则错误处理程序应将控制权返回到标准处理程序(通过返回false)。