iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot业务逻辑异常的处理方法介绍
  • 193
分享到

SpringBoot业务逻辑异常的处理方法介绍

2024-04-02 19:04:59 193人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录局部异常全局异常在Spring Boot项目中除了设置错误页面,还可以通过注解实现错误处理。 局部异常 局部异常: 在控制器类中添加一个方法,结合@ExceptionHandle

Spring Boot项目中除了设置错误页面,还可以通过注解实现错误处理。

局部异常

局部异常:

在控制器类中添加一个方法,结合@ExceptionHandler。但是只能对当前控制器中方法出现异常进行解决。

引入lombok依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

1.创建异常信息类

package com.yyl.firstdemo.exception;
import lombok.Data;
@Data
public class ExceptionMessage {
    private String code;
    private String message;
}

2.在controller中设置异常处理

package com.yyl.firstdemo.controller;
import com.yyl.firstdemo.exception.ExceptionMessage;
import org.springframework.stereotype.Controller;
import org.springframework.WEB.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class ErrorController {
    @RequestMapping("/test")
    public String testError(){
        System.out.println(5/0);
        return "500";
    }
    @ExceptionHandler(ArithmeticException.class)
    @ResponseBody
    public ExceptionMessage arithmeticException(Exception e){
        ExceptionMessage exceptionMessage = new ExceptionMessage();
        exceptionMessage.setCode("500");
        exceptionMessage.setMessage(e.getMessage());
        return exceptionMessage;
    }
}

@ExceptionHandler的参数为发生异常的类型。如果controller的方法中捕获到了这种异常,就会走@ExceptionHandler表示的方法arithmeticException(),在方法参数中,可以获取异常对象。

最终执行结果:

当访问test的controller方法时,会出现除0异常,就会走异常处理方法,封装异常信息,返回,错误类封装的状态信息。

全局异常

新建全局异常类,通过@ControllerAdvice结合@ExceptionHandler。当全局异常处理和局部处理同时存在时,局部生效(就近原则)

编写全局异常处理器:

package com.yyl.firstdemo.exception;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice
public class GlobalExceptionHandleController {
    //发生除0异常时,会执行该方法
    @ExceptionHandler(ArithmeticException.class)
    @ResponseBody
    public ExceptionMessage arithmeticException(Exception e){
        ExceptionMessage exceptionMessage = new ExceptionMessage();
        exceptionMessage.setCode("500");
        exceptionMessage.setMessage(e.getMessage());
        return exceptionMessage;
    }
    //发生空指针异常时会执行该方法
    @ExceptionHandler(NullPointerException.class)
    @ResponseBody
    public ExceptionMessage nullPointerException(NullPointerException
                                                         e){
        ExceptionMessage exceptionMessage = new ExceptionMessage();
        exceptionMessage.setCode("500");
        exceptionMessage.setMessage(e.getMessage());
        return exceptionMessage;
    }
    //发生其他未知异常时,会执行该方法
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ExceptionMessage otherException(){
        ExceptionMessage exceptionMessage = new ExceptionMessage();
        exceptionMessage.setCode("500");
        exceptionMessage.setMessage("发生了其他未知异常!");
        return exceptionMessage;
    }
}

编写controller,增加两个方法:

package com.yyl.firstdemo.controller;
import com.yyl.firstdemo.exception.ExceptionMessage;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class ErrorController {
    @RequestMapping("/test")
    public String testError(){
        System.out.println(5/0);
        return "500";
    }
    @RequestMapping("/testNull")
    public String testNull(){
        String s = null;
        System.out.println(s.length());
        return null;
    }
    @RequestMapping("testOther")
    public String testOther(){
        int[] arr = new int[3];
        System.out.println(arr[5]);
        return null;
    }
}

测试结果如下:

我们再加上局部异常,再进行测试:

我们发现就近原则生效,异常被局部异常处理器捕获处理

到此这篇关于SpringBoot业务逻辑异常的处理方法介绍的文章就介绍到这了,更多相关SpringBoot业务逻辑异常内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot业务逻辑异常的处理方法介绍

本文链接: https://www.lsjlt.com/news/167385.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作