SpringMVC(异常处理)

本文详细介绍如何在SpringMVC中实现全局异常处理,通过创建自定义异常处理器和异常类,提供更友好的用户错误提示。包括配置全局异常处理器、自定义异常类以及异常判断的代码示例。

Springmvc中异常处理

思路:做一个全局异常处理器,处理所有没有处理过的运行时异常用于更友好地提示用户。

创建全局异常处理器
/**
 * 全局异常处理器
 * @author Steven
 *
 */
public class CustomerException implements HandlerExceptionResolver {

	@Override
	public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object hanlder,
			Exception e) {
		//记录日志
		e.printStackTrace();
		//错误消息 
		String msg = "很抱歉,系统发生异常了,请联系管理员";
		
		//响应用户错误提示
		ModelAndView mav = new ModelAndView();
		//返回错误消息
		mav.addObject("msg", msg);
		//响应错误提示页面
		mav.setViewName("msg");
		return mav;
	}
}

配置异常处理器

在springmvc.xml中配置全局异常处理器

<!-- 全局异常处理器 -->
	<bean class="com.java.Exception.CustomerException "/>

测试访问queryVoid.action

@RequestMapping("queryVoid")
	public void queryVoid(HttpServletRequest request,HttpServletResponse response) throws Exception{

		int i = 1/0;//定义错误异常
				
		//设施响应的字符编码
		response.setContentType("text/html;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		PrintWriter printWriter = response.getWriter();
		printWriter.println("这是response的打印消息");
	}

更智能、更友好的提示,解决方案

新建自定义异常类
/**
 * 自定义异常
 * @author Steven
 *
 */
public class MyException extends Exception {
	
	//错误消息
	private String msg;

	public MyException() {
		super();
	}
	public MyException(String msg) {
		super();
		this.msg = msg;
	}
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
}

加上异常判断
@RequestMapping("queryVoid")
	public void queryVoid(HttpServletRequest request,HttpServletResponse response) throws Exception{
		
		if (true) {
			throw new MyException("有错误");
		}
		int i = 1/0;
				
		//设施响应的字符编码
		response.setContentType("text/html;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		PrintWriter printWriter = response.getWriter();
		printWriter.println("这是response的打印消息");
	}
//自定义异常处理
		if (e instanceof MyException) {
			result = ((MyException)e).getMsg();
		}
测试访问queryVoid.action
@RequestMapping("queryVoid")
	public void queryVoid(HttpServletRequest request,HttpServletResponse response) throws Exception{
	
		if (true) {
			throw new MyException("有错误");
		}
		int i = 1/0;
				
		//设施响应的字符编码
		response.setContentType("text/html;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		PrintWriter printWriter = response.getWriter();
		printWriter.println("这是response的打印消息");
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值