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 替换 try 和 catch 来手动处理这种情况=]
顺便说一句,@Learner 关于 get_message()
是 100% 正确的,它不在 laravel 中,据我所知,将来用 getMessage()
替换它
在我的例子中,我必须使用 \Throwable
而不是 \Exception
try {
//code
} catch (\Throwable $e) {
dd($e);
}
我知道关于这个问题有很多答案,但 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 替换 try 和 catch 来手动处理这种情况=]
顺便说一句,@Learner 关于 get_message()
是 100% 正确的,它不在 laravel 中,据我所知,将来用 getMessage()
在我的例子中,我必须使用 \Throwable
而不是 \Exception
try {
//code
} catch (\Throwable $e) {
dd($e);
}