Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 捕获Laravel 4中的错误异常_Php_Error Handling_Laravel - Fatal编程技术网

Php 捕获Laravel 4中的错误异常

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) {

从文档中可以看出,我们可以像这样捕获所有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)
{
    //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
呢?我会制作另一个处理程序,这里提供的示例是:哦,好的。我就是这么做的。我只是觉得在这一个示例中有一种处理所有问题的方法尽管如此,谢谢:)你也许可以,需要调查一下。