Laravel 5.1 中的表单验证异常没有被异常捕获?

gsk*_*gsk 3 php exception laravel laravel-5 laravel-5.1

在 laravel5 中,我捕获了app/Exceptions/Handler@render函数中的所有错误,并且工作正常。下面给出的代码,

     public function render($request, Exception $e) {
        $error_response['error'] = array(
            'code' => NULL,
            'message' => NULL,
            'debug' => NULL
        );
        if ($e instanceof HttpException && $e->getStatusCode() == 422) {
            $error_response['error']['code'] = 422;
            $error_response['error']['message'] = $e->getMessage();
            $error_response['error']['debug'] = null;
            return new JsonResponse($error_response, 422);
        } 
 }
        return parent::render($request, $e);
}
Run Code Online (Sandbox Code Playgroud)

但是在laravel5.1中,当表单验证失败时,会抛出异常错误消息422。但它不是从 捕获 app/Exceptions/Handler@render 而是与 一起正常工作abort(422)

我该如何解决这个问题?

小智 5

你可以简单地通过做

public function render($request, Exception $e) {
    if($e instanceof ValidationException) {
        // Your code here
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这在 Laravel 5.4 中对我有用 - 只需记住将 use 语句添加到 `Handler` 类的顶部: ```use Illuminate\Validation\ValidationException;``` (我最初忘记了!) (5认同)