Php 捕获Laravel 4中的错误异常
从文档中可以看出,我们可以像这样捕获所有404:Php 捕获Laravel 4中的错误异常,php,error-handling,laravel,Php,Error Handling,Laravel,从文档中可以看出,我们可以像这样捕获所有404: App::missing(function($exception) { return Response::view('errors.missing', array(), 404); }); 我们也可以这样做: App::abort(404); App::abort(403); 所有404都由App::missing 所有其他错误由以下人员处理: App::error(function( HttpException $e) {
App::missing(function($exception)
{
return Response::view('errors.missing', array(), 404);
});
我们也可以这样做:
App::abort(404);
App::abort(403);
所有404都由App::missing
所有其他错误由以下人员处理:
App::error(function( HttpException $e)
{
//handle the error
});
但是问题是
我如何处理每个错误,比如如果是403,我将显示这个,如果是400,我将显示另一个错误
简短回答:如果自定义App::error函数没有返回值,Laravel将处理它
自定义错误视图和/或逻辑的代码示例:
App::error(function(Exception $exception, $code){
// Careful here, any codes which are not specified
// will be treated as 500
if ( ! in_array($code,array(401,403,404,500))){
return;
}
// assumes you have app/views/errors/401.blade.php, etc
$view = "errors/$code";
// add data that you want to pass to the view
$data = array('code'=>$code);
// switch statements provided in case you need to add
// additional logic for specific error code.
switch ($code) {
case 401:
return Response::view($view, $data, $code);
case 403:
return Response::view($view, $data, $code);
case 404:
return Response::view($view, $data, $code);
case 500:
return Response::view($view, $data, $code);
}
});
上面的代码段可以插入到默认的Log::error处理程序之后,或者更好地插入到自定义的引导方法中
编辑:已更新,因此处理程序仅处理您指定的代码。这是否意味着我应该删除
App::missing(函数($exception)
因为您的示例已经处理了404,而且我注意到,如果我同时处理了这两个错误,它只会在任何错误上显示一个空白的白色页面。最后,我如何在这里包含ModelNotFoundException
呢?我会制作另一个处理程序,这里提供的示例是:哦,好的。我就是这么做的。我只是觉得在这一个示例中有一种处理所有问题的方法尽管如此,谢谢:)你也许可以,需要调查一下。