天蓬老师2017-04-10 15:48:271楼
在Middleware或者App\Exceptions\Handler里捕获
Symfony\Component\HttpKernel\Exception\NotFoundHttpException
如果是Middleware
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
public function handle($request, Closure $next) {
try {
return $next($request);
} catch (NotFoundHttpException $e) {
return response()->json(['msg'=>'NotFound']);
}
}
2017.04.04 更新
已知laravel5的默认Exceptions\Handler会优先匹配404异常,所以建议在Handler进行处理。
修改app/Exceptions/Handler.php的render方法如下
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $exception)
{
if (is_a($exception, \Symfony\Component\HttpKernel\Exception\NotFoundHttpException::class) && $request->expectsJson()) {
return response()->json(['msg'=>'NotFound']);
} else {
return parent::render($request, $exception);
}
}