Try/catch 无法使用 laravel 5.4

Try/catch not working with laravel 5.4

我知道关于这个问题有很多答案,但 none 其中确实对我有帮助。

// update name

Route::put('/profile/update', function(Request $request){
$name = $request->input('name');

   try{
         echo DB::table('users')->where('id',Auth::id())->update(['name' => $name]);
      }
   catch(\Exception $e){
     // do task when error
      echo $e->get_message();
   }
});

我也试过删除方法,但还是不行,请问是怎么回事。 谢谢。

2020 更新

Laravel 主要使用驼峰命名法,因此请使用:

   catch(\Exception $e){
     // do task when error
      echo $e->getMessage();
   }

如果没有,则转储完整 $e 以查看它:

    catch(\Exception $e){
       // do task when error
       dd($e);
    }

snake_case 命名法仅用于 Laravel 中的 table 个名称。

echo $e->get_message(); 更改为 echo $e->getMessage();,异常 class 没有 get_message() 函数。

从您的代码来看,代码似乎永远不会命中实际上与 laravel 无关的问题。你的问题是SQL

您正在尝试更新记录并且更新 none- 现有行在 SQL 中永远不会失败。所以我建议通过检查结果值并用 if else[=22 替换 trycatch 来手动处理这种情况=]

顺便说一句,@Learner 关于 get_message() 是 100% 正确的,它不在 laravel 中,据我所知,将来用 getMessage()

替换它

在我的例子中,我必须使用 \Throwable 而不是 \Exception

try {
   //code 
} catch (\Throwable $e) {
     dd($e);
}