JAVA中定义简单的全局和自定义异常处理器

一.定义全局异常处理器

操作步骤:

1.创建一个类,加上@ControllerAdvice注解

2.在该类中定义一个方法,参数为Exception e,并给方法加上@ExceptionHandler(Exception.class)注解

3.方法中写两行代码,e.printStackTrace(); 和你要在控制台上输出的错误信息

          一个简单的全局异常处理器就定义好了,下图为一个示例,因为我要将方法的返回值直接作为 HTTP 响应体返回给客户端,所以我通过 @ResponseBody 将Result对象序列化为 JSON 格式传递给前端。

详解:

1.@ControllerAdvice 是 Spring 提供的注解,表示这是一个全局的异常处理类。它可以用来捕获所有控制器(即标有 @Controller@RestController 的类)中发生的异常,并进行统一的异常处理。

2.@ExceptionHandler(Exception.class):这个注解标识的方法用于处理指定类型的异常。在这里,Exception.class 表示处理所有类型的异常。当控制器抛出 Exception 类型的异常时,这个方法会被调用。

3.e.printStackTrace():打印异常的堆栈信息。

4.return语句用来在捕获到异常后输出你想输出的内容,上图的Result是我自己编写的统一结果响应类,大家可以按照需要自行编写

二.定义自定义异常处理器

操作步骤1:

        先创建一个自定义异常,具体为创建一个类,继承RuntimeException,添加你需要的自定义信息(如状态码、错误消息等)。

下图为一个自定义异常的示例

        这个类中,我写了一个构造方法,允许传入一个错误码 code 和一个错误消息 msg,用于创建异常对象。super(msg):调用父类 RuntimeException 的构造方法,将异常消息传递给它。这样可以使用 getMessage() 方法来获取错误消息。然后将传入的 codemsg 赋值给当前对象的成员变量。最终我对toString() 方法进行了重写这样就可以使用this.getMessage()获取父类中的异常消息。

操作步骤2:

         自定义异常后,还需要自定义一个异常处理器,方法和定义之前的全局异常处理器类似,下图为一个示例:

   使用@ExceptionHandler(MyException.class)这个注解告诉 Spring,这个方法专门用来处理 MyException 类型的异常。

         方法的参数也必须改为自定义的异常 MyException类型

   这里的Result是我创建的一个统一结果响应类,使用它可以让我自定义返回的状态码和响应信息,大家可以根据需要自行修改

         

三.注意事项

RuntimeExceptionException 的子类,它也是一种 Exception

   但Exception 类是所有受检异常的基类。受检异常必须显式地捕获或声明抛出。例如,如果你抛出一个 IOException 编译器会强制要求你用 try-catch 来捕获,或者在方法签名上声明 throws

   RuntimeException 是一种未检查异常。这类异常在编译时不强制处理,也不需要显式声明 throws,直接抛出即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值