springboot异常处理方式
2024-10-20 10:01:14
一、异常处理思路
异常捕获的是unchecked型异常,因为checked异常在代码中年已经处理过,当然是在使用try-catch处理。这里首先使用ExceptionHandler捕获全局异常,这样如果是程序中有运行时异常就可以被随时捕获到,并将必要信息返回给调用者。对于使用try-catch捕获的异常,先创建自定义的运行时异常类,然后手动抛出。另外,在service使用unchecked异常可以触发事务回滚。
二、try-catch手动抛出异常代码演示
spingboot全局异常创建:
package com.dbzx.exception; import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice; import com.dbzx.common.ResultModel; /**
* 拦截异常后返回json信息,如果需要返回html页面,需要通过ModelAndView返回
* @author
*
*/
@RestControllerAdvice
public class JsonResultExceptionHandler { @ExceptionHandler(value = Exception.class)
public ResultModel defaultErrorHandler(HttpServletRequest req,
Exception e) throws Exception { e.printStackTrace();
return ResultModel.errorException("异常信息:"+e.getMessage());
}
}
自定义异常类:
package com.dbzx.exception; public class CustomUncheckException extends RuntimeException{ /**
*
*/
private static final long serialVersionUID = 1L; public CustomUncheckException() {
super();
} public CustomUncheckException(String msg) {
super(msg);
} public CustomUncheckException(String msg,Throwable cause) {
super(msg,cause);
} }
调用代码:
package com.dbzx.controller; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import com.dbzx.common.ResultModel;
import com.dbzx.exception.CustomUncheckException;
import com.dbzx.service.UserService; @RestController
@RequestMapping("dbzx")
public class HelloController { @Autowired
UserService userService; @RequestMapping("/hello")
public ResultModel hello() { try {
int i = 1 / 0;
} catch (Exception e) {
throw new CustomUncheckException(e.getMessage());
}
return ResultModel.ok("hello");
}
}
调用结果:
{
"status": 555,
"msg": "异常信息:/ by zero",
"data": null
}
最新文章
- web前端浮动、清浮动问题
- java 使用递归获取指定文件路径目录,删除指定的文件后缀(可扩展,根据具体需要的删除的后缀进行配置)~~
- cocoapod-使用cocoapod安装AFNetworking3.0
- JAVA StringBuilder StringBuffer String比较
- php用于URL的base64
- ubuntu系统安装redis
- UVA_埃及分数(Hard Version) UVA 12588
- DIV层漂浮居中
- Python之函数知识
- Asp.net mvc 小试牛刀一:多语言支持
- 强制解包看 Swift 的设计
- C#语言入门详解(002)
- 深度学习-conv卷积
- Windows Server 2008取消登录前的Ctrl+Alt+Delete组合键操作
- python第二章:数据类型--小白博客
- word常用功能
- Spring Boot + Spring Cloud 构建微服务系统(七):API服务网关(Zuul)
- 基于uFUN开发板的RGB调色板
- Oracle 项目中 SQL 脚本更新方式
- 我对Web开发的认识