异常处理的2中方法
第一种简单异常处理
第二种自定义异常处理
第一种使用简单异常处理方式@[第一种简单异常处理]
1.生成异常
package com.xckj.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/quick")
public void quick(){
String name ="zhangsan";
int a = Integer.parseInt(name);
}
}
2.在mvc中配置简单异常处理器
<!--系统配置,简单异常处理器-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="/error.jsp"></property><!--默认错误视图-->
<property name="exceptionMappings">
<map>
<entry key="java.lang.ClassCastException" value="/error.jsp"></entry><!--异常类型,跳转视图名称视图名称-->
</map>
</property>
</bean>
3.编写错误跳转页面
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>error ${name}</h1>
</body>
</html>
第二种方式自定义异常处理类
1.定义自定义异常处理类实现HandlerExceptionResolver接口,重写里面的方法
package com.xckj.exception;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyHandlerExceptionResolver implements org.springframework.web.servlet.HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
//处理异常的代码实现
//创建ModelAndView对象
ModelAndView modelAndView = new ModelAndView();
if(e instanceof ClassCastException){
modelAndView.addObject("name","类型转换异常");
modelAndView.setViewName("/error.jsp");
return modelAndView;
}else{
modelAndView.addObject("name","未知异常");
modelAndView.setViewName("/error.jsp");
return modelAndView;
}
}
}
2.在mvc中配置自定义异常处理类
<!--自定义异常处理器-->
<bean id="exceptionResolver" class="com.xckj.exception.MyHandlerExceptionResolver"/>
3.编写错误跳转页面
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>error ${name}</h1>
</body>
</html>