异常处理机制




自定义异常处理

自定义异常类:所有其他的异常放入ExpList

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package exception;

/**
* 全局异常类:其他所有异常都变成该类的异常
* 从而实现其他所有异常都能定位到一个错误页面
* @author Garen
*
*/
public class MyDefineGlobalExp extends Exception {
private String message;

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public MyDefineGlobalExp(String message) {
super(message);
this.message = message;
}
}

定义异常处理类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package exception;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

/**
* 处理异常
* @author Garen
*
*/
public class GlobalExceptionHandler implements HandlerExceptionResolver {

/**
* modelAndView:异常要返回的页面
* arg3:到底抛出了那种异常——MyDefineGlobalExp
* 异常——页面
*/
@Override
public ModelAndView resolveException(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,
Exception arg3) {
MyDefineGlobalExp myDefineGlobalExp = null;
if(arg3 instanceof MyDefineGlobalExp) {
myDefineGlobalExp = (MyDefineGlobalExp) arg3;
}else {
myDefineGlobalExp = new MyDefineGlobalExp("未知异常");
}

ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("msg",myDefineGlobalExp.getMessage());
modelAndView.setViewName("error");

return modelAndView;
}
}

自定义错误页面

1
2
3
4
5
6
7
8
9
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>error页面</title>
</head>
<body>
error:${msg}
</body>
</html>

配置异常处理:SpringMVC中让上述bean起作用

1
2
<!-- 配置异常处理器,class里面是处理异常类的路径 -->
<bean class="exception.GlobalExceptionHandler"></bean>

测试


ps:因作者能力有限,有错误的地方请见谅

  • 喜欢这篇文章的话可以用快捷键 Ctrl + D 来收藏本页

最后更新: 2018年09月19日 16:01

原始链接: https://blog.hdqyf.club/2018/05/16/20180516-SpringMVC深入—异常处理/

× 请我吃糖~
打赏二维码