尝试/捕捉不使用laravel 5.4

时间:2017-04-10 06:27:56

标签: php laravel-5 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();
   }
});

我也尝试过删除方法,但这也行不通,请你弄清楚发生了什么。 感谢。

4 个答案:

答案 0 :(得分:2)

Laravel主要使用camelCase进行命名,所以请使用:

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

如果没有,那么只需转储完整$e即可查看:

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

snake_case命名法仅用于Laravel中的表名。

答案 1 :(得分:2)

从您的代码中看起来似乎代码永远不会触及与laravel实际上无关的捕获。您的问题是 SQL

您正在尝试更新记录,并且在SQL中更新不存在的行永远不会失败。所以我建议通过检查结果值手动处理案例,并用替换尝试捕获,否则

BTW @Learner 100%正确get_message()它不在laravel中,因为我知道将来用getMessage()取代它

答案 2 :(得分:0)

echo $e->get_message();更改为echo $e->getMessage();,异常类不具备get_message()函数。

答案 3 :(得分:0)

就我而言,我必须使用var date = dataRow.Field<DateTime?>("TimeLineFrom").GetValueOrDefault(); // returns DateTime.Min for null 而不是\Throwable

\Exception