springmvc-异常处理
时间:2019-11-14
本文章向大家介绍springmvc-异常处理,主要包括springmvc-异常处理使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.异常处理的思路
系统中异常包括两类:预期异常和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息,
后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。
系统的 dao、 service、 controller 出现都通过 throws Exception 向上抛出,最后由 springmvc 前端
控制器交由异常处理器进行异常处理,最终返回一个比较友好的错误提示页面
2.示例
页面
index.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <body> <h2>异常处理</h2> <a href="user/testException">测试异常处理</a> </body> </html> success.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h3>跳转成功</h3> </body> </html> 控制器 @Controller @RequestMapping("/user") public class UserController { @RequestMapping("testException") public String testException() throws Exception{ System.out.println("run testException()..."); //模拟异常 int a = 10/0; return "success"; } }
没有做异常处理,异常会一步一步往上抛,到了浏览器就会出现不友好的页面,页面直接显示错误
想要解决,上面说到,controller向上抛异常给前端控制器没有问题,这里就需要写一个异常处理器组件,并且配置好
三个步骤
1.编写异常类(做提示信息)
public class MyException extends Exception{ private String message; public MyException(String message) { this.message = message; } public void setMessage(String message) { this.message = message; } @Override public String getMessage() { return message; } }
2.编写异常处理类
public class MyExceptionResolver implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) { e.printStackTrace(); MyException myException = null; //如果抛出的是自定义异常,则直接转换 if(e instanceof MyException){ myException = (MyException) e; }else{ //如果不是,则重新构造一个自定义异常 myException = new MyException("系统正在维护..."); } ModelAndView mv = new ModelAndView(); mv.addObject("errorMsg", myException.getMessage()); mv.setViewName("error"); return mv; } }
3.配置异常处理器,在springmvc.xml中配置
<!--配置自定义异常处理器--> <bean class="com.cong.exception.MyExceptionResolver" id="myExceptionResolver"></bean>
修改一下控制器
@Controller @RequestMapping("/user") public class UserController { @RequestMapping("testException") public String testException() throws MyException{ System.out.println("run testException()..."); //模拟异常 try { int a = 10/0; }catch (Exception e){ //sprint exception message e.printStackTrace(); //抛出异常 throw new MyException("出现自定义异常..."); } return "success"; } }
错误提示页面
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head> <title>错误页面</title> </head> <body> <h3>执行出错</h3> ${errorMsg} </body> </html>
结果
原文地址:https://www.cnblogs.com/ccoonngg/p/11855030.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 腾讯云直播开发日记 (二)附近直播-直播礼物-直播回放
- 腾讯云直播开发日记(三) 聊天室-直播转码-连麦混流
- c#类(class)
- es 7.2 生产集群 index 无数据写入故障定位
- HashMap都在用,原理你真的了解吗?
- Android必知必会--事件分发机制
- 又被逼着优化代码,这次我干掉了出入参 Log日志
- C#委托进阶,事件和委托,一次就看明白,附源码
- 树莓派爬虫多平台热搜榜轮播展示
- Scrapy 和 Pyppeteer 更优雅的对接方案
- 京喜前端自动化测试之路(小程序篇)
- JavaScript 混淆与逆向必读之 AST 节点类型名词基础
- 手把手教你如何实现大量图片的自适应图片页面的排列
- 那些你可能不知道的浏览器奇技淫巧
- 那些你可能不知道的 windows 奇技淫巧