在这个片段中,问题是我正在保存$ model(感谢@Lucas Brito)。 我不明白的是:
每次拨打$model->save();
$new = new System();
$new->imcid = $imcid;
$new->name = $name;
$new->validate();
Log::info('At update');
try{
$model->save();
}catch(\Exception $e){
Log::info('Exception thrown');
}
Log::info('Done');
在日志中,我可以看到“更新时”,但没有“抛出异常”或“完成” 我得到在routes.php上定义的消息
App::fatal(function($exception){
return Response::json(array(
'message' => 'damn...',
'exception' => $exception
), 500);
});
答案 0 :(得分:1)
而不是代码:
try{
$model->save();
}catch(\Exception $e){
Log::info('Exception thrown');
}
试试这个:
if(!$model->save()) {
throw new Exception("Couldn't save!");
}
else {
// success
}
默认情况下,app/start/global.php
中有(如果没有)异常处理程序,如下所示:
App::error(function(Exception $exception, $code)
{
Log::error($exception);
//Log::error($exception->getMessage());
});
您也可以通过扩展基类Exception
类来创建自定义异常类,并且可以改为抛出该自定义异常。
更新:您正在保存$model->save();
而不是$new->save();
。
为什么没有抓到我的捕获
这是因为发生了致命错误,并且您有一个致命错误的注册处理程序,如下面给出的错误和错误由该处理程序捕获:
App::fatal(function($exception){
//...
return Response::json(...);
});
因此,一旦从任何错误处理程序发送响应,它就会停止传播到up,刚刚完成传播并发送响应。
答案 1 :(得分:1)
我认为你正试图保存错误的变量。不应该保存$ new?
我是这样做的:
$reg = new Area;
$reg->name = $name;
$reg->created_at = time();
$reg->created_by = Auth::user()->id;
$reg->save();
答案 2 :(得分:0)
例外情况一直在升级致死,因为我错过了Log中的\。
所以:
它是catch中的代码,它抛出了错误 一直到App:致命
我无法再复制一遍,但写道 例外:
\Illuminate\Support\Facades\Log::error('message'.$exception);
App中的在我死的时候致命 在不同情况下进行调试。
使用App :: fatal。