美文网首页laravel
laravel5.5自定义错误输出

laravel5.5自定义错误输出

作者: 足迹人生2017 | 来源:发表于2017-12-20 15:08 被阅读178次

    默认情况下出异常情况时laravel5.5输出的是一个异常的html页面,对于用laravel做api调用时 抛出异常Html页面显然不够友好,我们可以通过自定义错误异常类的方式来解决
    1.先自定义一个错误处理handler,在app\Exceptions下面

    <?php
    /**
     * 自定义api异常处理
     * Created by PhpStorm.
     */
    
    namespace App\Exceptions;
    use Exception;
    
    class ApiHandler extends Handler
    {
    
        public function handler(Exception $exception)
        {
            //可以处理成需要的格式
            $return = [
                'status' => "fail",
                'message' => $exception->getMessage(),
                'data' => []
            ];
            return $return;
        }
    
        public function render($request, Exception $exception)
        {
            #当.env中的APP_DEBUG配置为True时调用原有的错误处理方式,false使用自定义的错误处理方式
            if (config('app.debug')) {
                return parent::render($request, $exception);
            }
            return $this->handler($exception);
        }
    }
    

    2.修改bootstrap/app.php

    <?php
    
    $app = new Illuminate\Foundation\Application(
        realpath(__DIR__ . '/../')
    );
    
    $app->singleton(
        Illuminate\Contracts\Http\Kernel::class,
        App\Http\Kernel::class
    );
    
    $app->singleton(
        Illuminate\Contracts\Console\Kernel::class,
        App\Console\Kernel::class
    );
    
    $app->singleton(
        Illuminate\Contracts\Debug\ExceptionHandler::class,
    #将默认的Handler修改为自定义的ApiHandler
    //    App\Exceptions\Handler::class
        App\Exceptions\ApiHandler::class
    );
    
    return $app;
    

    3.测试

    <?php
    namespace App\Http\Controllers\Api;
    
    use App\Http\Controllers\Controller;
    use Mockery\Exception;
    
    class DogsController extends Controller
    {
    
        public function index()
        {
                $i = 1/0;
        }
    }
    

    相关文章

      网友评论

        本文标题:laravel5.5自定义错误输出

        本文链接:https://www.haomeiwen.com/subject/mgugwxtx.html