2017-04-10 75 views
1

我知道这里有很多关于这个问题的答案,但是他们都没有帮助我。Try/catch不能与laravel 5.4

// 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(); 
    } 
}); 

我也试着删除方式,但也没有工作,就可以请弄清楚到底是怎么回事。 谢谢。

+0

这是路由文件'web.php'?为什么有'});'?给你一个描述,你想要做什么,你尝试了什么,以及问题 –

+0

是的,这是web.php文件,你是什么意思,为什么有});我正在测试这个方法,这就是为什么我使用直接函数。 –

+0

好的。你的问题是它总是返回'1'不是吗? –

回答

0

从你的代码看来,代码似乎永远不会碰到与laravel无关的catch。你的问题是一个SQL之一。

您试图更新记录并更新一个不存在的行在SQL中永远不会失败。所以我建议通过检查结果值和更换尝试如果其他

BTW @Learner是100%正确的手工处理的情况下约get_message()它不是在laravel我所知更换在未来与getMessage()

+0

知道了非常感谢! –

1

Laravel大多采用驼峰的命名所以要用:

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

如果没有,那么只转储全$e看到它通过:

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

snake_case术语仅用于在Laravel表名。

+0

对不起,但这不是答案,这是一个建议 –

+0

@汗Shahrukh,不好意思? :))Dude'get_message()'不用于Laravel中的错误消息。 'getMessage()'是正确的方法..它将解决OP的问题,idk你在说什么。在我看来,解决问题的任何解决问题被提到作为答案 - lol – Learner

+0

在我的情况下,get_message()只是一个未定义的函数,这使得0在这里感觉,但我把它放在只测试,如果catch正在执行,但catch块永远不会执行..可能是SQL问题... –

0

更改echo $e->get_message();echo $e->getMessage();,Exception类没有get_message()函数。