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 宇视监控服务器无法登录
  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)