2017-04-10 97 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()函數。