10. 异常处理
10.1. 定义自定义异常类
非必须
java
/**
* 项目 : spring-mvc-java1
* 创建时间 :2020/3/31 9:57 31
* author :jshand-root
* site : http://314649444.iteye.com
* 描述 : 自定义异常类
*/
public class BusinessException extends Exception {
public BusinessException(String message) {
super(message);
}
}
10.2. 定义异常处理器
当产生异常时能够进行处理,比如说跳转到一个友好错误界面
- 异常处理器 MyHandlerExceptionResolver
- 通用的异常处理页面 500.jsp
- 可能产生异常的Controller
java
package com.neuedu.mvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 项目: spring-framework
* 类名: UserController
* 创建时间: 2024/3/20 13:50
* 描述 :
* 作者 : 张金山
* QQ : 314649444
* Site: https://jshand.gitee.io
*/
@Controller
@RequestMapping("/user")
public class UserController {
/**
* http://localhost:8080/web/user/calc?numa=10&numb=2
* @param numa
* @param numb
* @return
*/
@RequestMapping("/calc")
@ResponseBody
public String calc(int numa, int numb){
return String.valueOf(numa/numb);
}
}
java
package com.neuedu.mvc.framework;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 项目: spring-framework
* 类名: MyHandlerExceptionResolvers
* 创建时间: 2024/3/20 13:59
* 描述 :
* 作者 : 张金山
* QQ : 314649444
* Site: https://jshand.gitee.io
*/
@Component
public class MyHandlerExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
System.out.println("ex.getClass() = " + ex.getClass());
// if(exinstanceof ArithmeticException){
//
// }
//出现异常的时候 跳转到 一个漂亮的 错误页面
ModelAndView modelAndView = new ModelAndView("/500");
return modelAndView;
}
}
html
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2024/3/20
Time: 13:55
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<style>
.container{
width: 100%;
height: 300px;
border: solid 1px grey;
box-shadow: 0 0 5px orange;
background-color: skyblue;
margin: 5px;
border-radius: 5px ;
}
</style>
</head>
<body>
<div class="container">
假装我是一个漂亮页面
</div>
</body>
</html>
java
package com.neuedu.mvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 项目: spring-framework
* 类名: UserController
* 创建时间: 2024/3/20 13:50
* 描述 :
* 作者 : 张金山
* QQ : 314649444
* Site: https://jshand.gitee.io
*/
@Controller
@RequestMapping("/user")
public class UserController {
/**
* http://localhost:8080/web/user/calc?numa=10&numb=2
* @param numa
* @param numb
* @return
*/
@RequestMapping("/calc")
@ResponseBody
public String calc(int numa, int numb){
return String.valueOf(numa/numb);
}
}
10.3. 配置异常处理器
将定义好的异常处理器配置到iOC容器中。
- 使用包扫描 @Component
<bean class="com.neuedu.mvc.framework.MyHandlerExceptionResolver"/>
