我有这个问题,其中laravel ModelNotFound exeption处理程序捕获所有异常,而不仅仅是与雄辩有关。
我已将此代码添加到global.php
:
// this is default code
App::error(function(Exception $exception, $code)
{
Log::error($exception);
});
// added code
App::error(function(ModelNotFoundException $exception)
{
//do something, in my case redirect to 404 or whaterver
});
Controller有这个部分代码:
namespace CompanyName\Admin;
class PromosController extends CompanyNameAdminController {
public function show($id) {
$promo = Promo::findOrFail($id);
}
}
现在,如果我尝试传递不存在的id,我将收到白页,应用程序错误中的代码不会执行。其他问题是这个App:错误捕获所有的Exeptions,比如没有找到的控制器等,基本上每个例子。
我做错了什么?我从Laracasts Exeptions处理剧集得到了这个想法,但不知怎的,我错过了一些东西。因为Laravel没有得到关于问题的反馈,所以我被困住了。我怀疑命名空间与它有关但我不确定..
编辑: 最后我在控制台中找到了一些反馈: 500内部服务器错误 HTML: 重新加载页面以获取:http://cms.dev/admin/promos/533
的来源答案 0 :(得分:1)
ModelNotFoundException
不在该命名空间中,因此找不到它。指定限定名称:
App::error(function(Illuminate\Database\Eloquent\ModelNotFoundException $exception)
{
//do something, in my case redirect to 404 or whaterver
});
答案 1 :(得分:0)
问题在于您的异常处理程序的顺序。您首先拥有Exception
的处理程序,ModelNotFoundException
扩展Exception
它由Exception
处理程序处理,然后才能到达ModelNotFoundException
。只需切换它们,您就会发现它按预期工作。