首页 > 其他分享 >laravel新建异常类

laravel新建异常类

时间:2022-12-07 17:26:47浏览次数:27  
标签:laravel exception code 新建 app ApiException 异常

1.新建异常类 php artisan make:exception ApiException

复制代码
<?php

namespace App\Exceptions;

use Exception;
use Throwable;

class ApiException extends Exception
{
    public function __construct($message = "", $code = 400, Throwable $previous = null)
    {
        parent::__construct($message, $code, $previous);
    }

    public function render()
    {
        return response()->json([
            'msg' => $this->message,
            'code' => $this->code,
        ], $this->code);
    }
}
复制代码

2.方法中使用异常类

复制代码
引入异常类
use App\Exceptions\ApiException;


方法中抛出异常
throw new ApiException('该商品不存在');
复制代码

3.如果有使用Dingo,Dinggo会接管laravel的异常,render()方法不被执行,需要在服务提供者中屏蔽部分信息,找到app\Providers\AppServiceProvider.php中的boot方法,添加屏蔽代码

复制代码
public function boot()
{
    Schema::defaultStringLength(200);

    //有使用dinggo的话,添加如下代码屏蔽部分不需要显示内容
    app('api.exception')->register(function (\Exception $exception) {
        $request = Request::capture();
        return app('App\Exceptions\Handler')->render($request, $exception);
    });
}
复制代码

4.新建的异常会被写进laravel的日志文件,不需要的可以在异常基类 app\Exceptions\Handler.php 中添加排除

复制代码
<?php

namespace App\Exceptions;

use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;

class Handler extends ExceptionHandler
{
    /**
     * 添加不需要写进laravel日志的异常类
     * A list of the exception types that are not reported.
     *
     * @var array
     */
    protected $dontReport = [
        ApiException::class,
    ];

    /**
     * A list of the inputs that are never flashed for validation exceptions.
     *
     * @var array
     */
    protected $dontFlash = [
        'current_password',
        'password',
        'password_confirmation',
    ];

    /**
     * Register the exception handling callbacks for the application.
     *
     * @return void
     */
    public function register()
    {
        $this->reportable(function (Throwable $e) {
            //
        });
    }
}
复制代码

可以手动写入

Log::error($this->message);

标签:laravel,exception,code,新建,app,ApiException,异常
From: https://www.cnblogs.com/zjj1990/p/16963657.html

相关文章

  • 实例解析丨一文搞定GaussDB CM服务异常
    摘要:本文主要为大家带来如何处理GaussDBCM服务异常问题。本文分享自华为云社区《​​【实例状态】GaussDBCM服务异常​​》,作者:酷哥。首先确认是否是虚拟机、网络故障,底层......
  • c++标准库笔记:13.4.4 Stream的状态和异常
    设置触发异常Stream缺省的情况下不抛出异常,但可由成员函数exceptions来设置这种行为。exceptions有两种形式:获取引发异常的标志(不带参数)设置引发异常的标志(带参数)//Thisme......
  • 分享一个你很可能不知道的Java异常实现的缺陷
    前言Java中一个大家熟知的知识点就是异常捕获,try...catch...finally组合,但是很多人不知道这里面有一个关于Java的缺陷,或者说是异常实现的一点不足之处。我这边就通过一......
  • 随笔(三)『SpringBoot自定义异常类』
    1、定义异常类,继承RuntimeExceptionpackagecom.baihua.common.exception;importlombok.Data;/***自定义异常*/@DatapublicclassMyExceptionextendsRunti......
  • python画箱型图判断异常值
    今天看了本书,做数据集需要判断数据是否存在异常值。好像是用箱型图做的但是我不清楚具体的原理。附上代码:importpandasaspdimportseabornassnsimportmatplotli......
  • python基础-异常处理
    1.异常与异常处理  异常就是程序中的错误,正常情况下程序是自上而下逐行执行的,当遇到异常时,就会报错退出执行;  异常处理就是在程序中可能出错的地方进行提前预捕获,并......
  • C#中的异常语句
    程序中的异常是指当程序再执行时遇到错误或者意外行为。使用异常处理语句就可以精确捕获这些异常,以提供更多的信息来解决问题或者给出提示。C#中的异常处理语句主要有两......
  • python中五种异常机制的简介
    默认的异常处理器 代码如下:s='Hellogirl!'prints[100]print'continue' 如果我们没有对异常进行任何预防,那么在程序执行的过程中发生异常,就会中断程序,调用py......
  • 修改win10系统右键新建
    一、win+R打开CMD输入regedit回车进入“注册表”  二、找到此目录“计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\Po......
  • 糟糕,数据库异常不可用怎么办?
    摘要:糟糕,数据库异常不可用怎么办?挺着急的,在线等。本文分享自华为云社区《糟糕,数据库异常不可用怎么办?》,作者:GaussDB数据库。随着数字化转型的加速,数据量爆发式增长,用户......