dongtongjian3127 2017-11-17 15:27
浏览 26
已采纳

Laravel例外没有捕获

I'm trying to do a very basic exception try catch, but it doesn't catch.

 $id =0;
 try {
        $question = $this->model->find($id);  // will not find anything since $id = 0
        $question->delete(); // throw an exception
        return true;
 } catch (\Exception $e) {
        dd ('hello');  // should end up here, but no?!?!? 
 } catch (FatalThrowableError $f) {
        echo ("fatal"); // or here... but no. 
 }

but the catch doesn't "catch". I get an Fatal error in the browser saying that delete was called on a null object. But that's exactly what I was trying to do: do a delete on a null object (id = 0 is not in the DB), to test the exception.

I have tried

use Symfony\Component\Debug\Exception;
use Symfony\Component\Debug\Exception\FatalThrowableError;

or simply

Exception;
FatalThrowableError;

Also, having the \Exception $e or Exception $e (with or without ) doesn't change anything.

Note that if I add a line like $foo = 4/0 I get into the Exception section (dd (hello)).

in .env APP_DEBUG=true, APP_LOG_LEVEL=debug

I'm on Laravel 5.5 using PHP 7.0.10 on windows 7.

  • 写回答

1条回答 默认 最新

  • douxiong3245 2017-11-17 15:31
    关注

    http://php.net/manual/en/language.errors.php7.php

    As the Error hierarchy does not inherit from Exception, code that uses catch (Exception $e) { ... } blocks to handle uncaught exceptions in PHP 5 will find that these Errors are not caught by these blocks. Either a catch (Error $e) { ... } block or a set_exception_handler() handler is required.

    You can, additionally, catch (\Throwable $e) {} to account for both Error and Exception types.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测