SpringMvc学习(六)

SpringMvc的异常处理

1. 异常处理思路

Controller调用service,service调用dao,异常都是向上抛出的,最终有DispatcherServlet找异常处理器进行异常的处理。

2. SpringMVC的异常处理

controller代码

package com.qcby.demo3;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/role")
public class RoleController {
/**
* 自己处理异常
* @return
	@RequestMapping("/findAll.do")
	public String findAll(){
		try {
		System.out.println("执行了...");
		// 模拟异常
		int a = 10/0;
		} catch (Exception e) {
		e.printStackTrace();
		// 跳转到友好提示页面
		return "404";
		}
	return "suc";
	}
*/
/**
* 使用异常处理器方式
* @return
*/
	@RequestMapping("/findAll.do")
	public String findAll(){
	System.out.println("执行了...");
	// 模拟异常
	int a = 10/0;
	return "suc";
	}
}

自定义异常类

package com.qcby.demo3;

public class SysException extends Exception{
	// 提示消息
	private String message;
	@Override
	public String getMessage() {
	return message;
	}
	public void setMessage(String message) {
	this.message = message;
	}
	public SysException(String message) {
	this.message = message;
	}
}

自定义异常处理器

package com.qcby.demo3;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SysExceptionResolver implements HandlerExceptionResolver {
/**
* 程序出现了异常,调用异常处理器中的方法
* @param o
* @param e
* @return
*/
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse
response, Object o, Exception e) {
	e.printStackTrace();
	// 做强转
	SysException exception = null;
	// 判断
	if(e instanceof SysException){
	exception = (SysException)e;
	}else{
	exception = new SysException("系统正在维护,请联系管理员");
	}
	// 存入异常提示信息
	ModelAndView mv = new ModelAndView();
	mv.addObject("errorMsg",exception.getMessage());
	// 设置跳转的页面
	mv.setViewName("error");
	return mv;
	}
}

配置异常处理器

<bean id="sysExceptionResolver" class="com.qcby.demo3.SysExceptionResolver" />

jsp页面代码

<%@ page contentType="text/html;charset=UTF‐8" language="java" isELIgnored="false" %>
<html>
<head>
<title>错误提示页面</title>
</head>
<body>
<h3>错误的友好提示页面</h3>
${errorMsg}
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值