学习SpringMVC(二十四)之异常处理

1.在@ExceptionHandler 方法的入参中可以加入 Exception 类型的参数, 该参数即对应发生的异常对象

[email protected]方法的入参中不能传入 Map.若希望把异常信息传导页面上,需要使用 ModelAndView作为返回值

[email protected] 方法标记的异常有优先级的问题.会先处理匹配度高的异常

直接上实例:

在Controller中:

<span style="font-size:18px;"><span style="font-family:SimSun;font-size:18px;">package com.cgf.springmvc.handlers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
@RequestMapping(value="/springmvc")
@Controller
public class MyException {
	<span style="color:#ff0000;">@ExceptionHandler(value={Exception.class})</span>
	public ModelAndView myException(Exception ex){
		ModelAndView mv=new ModelAndView("error");
		mv.addObject("exception", ex);
		return mv;
	}
	@RequestMapping(value="/testException")
	public String testException(@RequestParam(value="id")int id){
		System.out.println("id=:"+10/id);
		return "success";
	}

}</span></span>

在springmvc.xml中:需要配置<mvc:annotation-driven/>

在index.jsp中;

<span style="font-size:18px;"><span style="font-family:SimSun;">  <h1>异常处理</h1>
  <a href="springmvc/testException?id=1">Test Exception</a>
  <br></span></span>

[email protected]: 如果在当前 Handler 中找不到 @ExceptionHandler 方法来出来当前方法出现的异常,

则将去@ControllerAdvice 标记的类中查找 @ExceptionHandler 标记的方法来处理异常.

<span style="font-size:18px;">package com.cgf.springmvc.handlers;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

<span style="background-color: rgb(255, 255, 255);"><span style="color:#ff0000;">@ControllerAdvice</span></span>
public class MyArithmeticException {

	@ExceptionHandler(value={ArithmeticException.class})
	public ModelAndView myException(Exception ex){
		System.out.println("MyArithmeticException");
		ModelAndView mv=new ModelAndView("error");
		mv.addObject("exception", ex);
		return mv;
	}

}</span>

5.ResponseStatusExceptionResolver处理用@ResponseStatus标识的异常类或异常方法

<span style="font-family:SimSun;font-size:18px;">package com.cgf.springmvc.handlers;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(reason="用户名与密码不匹配",value=HttpStatus.FORBIDDEN)
public class UserNameNotMatchPasswordException extends RuntimeException{
	/**
	 *
	 */
	private static final long serialVersionUID = 1L;
}</span>

时间: 2024-11-05 07:50:01

学习SpringMVC(二十四)之异常处理的相关文章

马哥学习笔记二十四——分布式复制快设备drbd

DRBD: 主从 primary: 可执行读.写操作 secondary: 文件系统不能挂载 DRBD: dual primay, 双主(基于集群文件系统的高可用集群) 磁盘调度器:合并读请求,合并写请求: Procotol:drbd数据同步协议 A: Async, 异步  数据发送到本机tcp/ip协议栈 B:semi sync, 半同步  数据发送到对方tcp/ip协议 C:sync, 同步  数据到达对方存储设备 DRBD Source: DRBD资源 资源名称:可以是除了空白字符外的任意

Android学习笔记二十四之ListView列表视图二

Android学习笔记二十四之ListView列表视图二 前面一篇我们介绍了常用的几种适配器的简单实现和ListView的简单使用,这一篇中,我们介绍一下ListView的优化和一些其它的问题. ListView优化方法一 在ListView中,我们最常用的就是自定义Adapter,在我们自定义Adapter中,需要实现两个比较重要的方法getCount()和getView(),前者是负责计算ListView的总Item数,后者是生成Item,有多少个Item就会调用getView()方法多少次

angular学习笔记(二十四)-$http(2)-设置http请求头

1. angular默认的请求头: 其中,Accept 和 X-Requested-With是$http自带的默认配置 2. 修改默认请求头: (1) 全局修改(整个模块) 使用$httpProvider依赖 var myApp = angular.module('MyApp',[]); myApp.config(function($httpProvider){ console.log($httpProvider.defaults.headers.common) //修改/操作$httpProv

javaweb学习总结(二十四)——jsp传统标签开发

一.标签技术的API 1.1.标签技术的API类继承关系 二.标签API简单介绍 2.1.JspTag接口 JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属性和方法.JspTag接口有Tag和SimpleTag两个直接子接口,JSP2.0以前的版本中只有Tag接口,所以把实现Tag接口的自定义标签也叫做传统标签,把实现SimpleTag接口的自定义标签叫做简单标签. 2.2.Tag接口 Tag接口是所有传统标签的父接口,其中定义了两个重要方法(doSt

javaweb学习总结(二十四)——jsp传统标签开发【转】

原文地址:http://www.cnblogs.com/xdp-gacl/p/3916946.html 一.标签技术的API 1.1.标签技术的API类继承关系 二.标签API简单介绍 2.1.JspTag接口 JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属性和方法.JspTag接口有Tag和SimpleTag两个直接子接口,JSP2.0以前的版本中只有Tag接口,所以把实现Tag接口的自定义标签也叫做传统标签,把实现SimpleTag接口的自定义标

轻松学习JavaScript二十四:DOM编程学习之操作CSS样式(一)

CSS样式作为HTML的辅助,可以增强页面的显示效果.前面学了DOM操作HTML,因此也要学DOM操作CSS 样式的方法.在学习CSS的时候,已经知道了CSS插入到HTML文档有三种情况,分别为:行内式,内嵌式和外联式 (这是我们最常用的).下面就来看怎么操作这三种情况: 一操作行内式 先来写一个HTML文档: <span style="font-size:18px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0

智能车学习(二十四)&mdash;&mdash;舵机学习

一.舵机基础知识 1.定义 舵机简单的说就是集成了直流电机.电机控制器和减速器等,并封装在一个便于安装的外壳里的伺服单元.能够利用简单的输入信号比较精确的转动给定角度的电机系统. 舵机安装了一个电位器(或其它角度传感器)检测输出轴转动角度,控制板根据电位器的信息能比较精确的控制和保持输出轴的角度.这样的直流电机控制方式叫闭环控制,所以舵机更准确的说是伺服马达,英文servo. 2.舵机组成 3.工作原理 控制电路接收信号源的控制信号,并驱动电机转动:齿轮组将电机的速度成大倍数缩小,并将电机的输出

Java学习系列(二十四)Java正则表达式详解

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/45501777 前言 正则表达式可以说是用来处理字符串的一把利器,它是一个专门匹配n个字符串的字符串模板,本质是查找和替换.在实例演示之前先了解一下Pattern.Matcher这两个工具类,Pattern:编译好的带匹配的模板(如:Pattern.compile("[a-z]{2}");/ / 取2个小写字母):Matcher:匹配目标字符串后产生的结果(如:pattern.m

javaweb学习总结二十四(servlet经常用到的对象)

一:ServletConfig对象 1:用来封装数据初始化参数,在服务器web.xml配置文件中可以使用<init-param>标签配置初始化参数. 2:实例演示 web.xml文件中配置初始化参数: 1 <servlet> 2 <servlet-name>ServletDemo</servlet-name> 3 <servlet-class>com.hlcui.servlet.ServletDemo</servlet-class>