springmvc异常处理
springmvc异常处理
springmvc通过HandlerExceptionResolver来处理程序的异常
一般情况下使用@ExceptionHandler注解来进行标注异常处理
ExceptionHandlerExceptionResolver异常处理
- 如果出现异常,先是查找该Controller中用@ExceptionHandler注解定义的方法
- 如果没有找到@ExceptionHandler注解的话,就会寻找标记了@ControllerAdvice注解的类中的@ExceptionHandler注解方法
局部异常处理
在当前Controller中处理异常(当前Controller中使用@ExceptionHandler标注的方法)
@Controller
@RequestMapping("/exception")
public class ExceptionController {
/**
* 在@Controller中所写的@ExceptionHandler方法只能处理该Controller类中出现的异常,不可以处理其他Controller中出现的异常,此为局部异常处理
*/
@ExceptionHandler
@ResponseBody
public String exception(Exception e){
return "出现异常"+e.getMessage();
}
@RequestMapping("/testException")
@ResponseBody
public String testException(){
User user = null;
System.out.println(user.getId());
return "success";
}
}
全局异常处理
如果当前Controller中没有异常处理,则会使用全局异常(使用@ControllerAdvice标注的类中的@ExceptionHandler方法)
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler
@ResponseBody
public String exception(Exception e){
return "全局捕获: 出现异常"+e.getMessage();
}
}
ResponseStatusExceptionResolver异常处理
该异常处理机制是来解析@ResponseStatus来标注的异常
自定义异常
// code指定的是状态码,reason指定的是错误信息
@ResponseStatus(code = HttpStatus.BAD_REQUEST,reason = "出现业务异常")
public class BusinessException extends RuntimeException{
}
@RequestMapping("/testBusinessException")
@ResponseBody
public String testBusinessException(){
throw new BusinessException();
}
调用该接口就会返回到状态码为400的错误页面
由于本身的博客百度没有收录,博客地址http://zhhll.icu
本文来自博客园,作者:拾光师,转载请注明原文链接:https://www.cnblogs.com/life-time/p/14498349.html 个人博客-> https://zhhll.icu
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~