SpringMVC利用注解实现异常处理
来源:互联网 发布:公司邮箱的域名是什么 编辑:程序博客网 时间:2024/05/16 09:11
在项目中如何处理出现的异常,以前通常的作法是继承Exception或实现Runnable接口来封装自定义异常,然后在项目代码中通过try...catch语句块来捕获到出现的异常,封装到我们自己定义的异常类中。如果项目中使用的SpringMVC框架的话,这里介绍另外一种也比较方便的异常处理方法,本人还是比较喜欢这种处理方式。这里用到的是ExceptionHandler这个注解。
1、首先新建一个名为BaseController的抽象类;
public abstract class BaseController {
@ExceptionHandler
public String exception(HttpServletRequest request, Exception e) {
// 根据不同的异常类型进行不同处理
if(e instanceof SQLException) {
String s = "数据库异常" ;
request.setAttribute( "exceptionMessage", s);
return "error";
}else if(e instanceof IOException){
String s = "IO异常";
request.setAttribute( "exceptionMessage", s);
return "error";
}
else return "error";
}
}
该方法需要定义在Controller内部,然后创建一个方法并用@ExceptionHandler注解来修饰用来处理异常,这个方法基本和 @RequestMapping修饰的方法差不多,只是可以多一个类型为Exception的参数,@ExceptionHandler中可以添加一个或多个异常的类型,如果为空的话则认为可以触发所有的异常类型错误,返回值为视图名。
2、以后让每个controller类继承定义的BaseController即可;
@Controller
@RequestMapping(value="/login" )
public class LoginController extends BaseController{
private Logger logger = Logger.getLogger(LoginController.class);
private JsonGenerator jsonGenerator = null;
@Autowired
IUserService userService;
@RequestMapping(value= "/login")
public String login() throws Exception{
logger.info( "login....");
//这里模拟抛出一个SQL异常信息
throw new SQLException();
}
}
3、最后定义一个error.jsp页面
<%@ page language ="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body >
${exceptionMessage}
</body >
</html>
运行效果:
当然如果习惯用配置文件的伙伴,也可以通过Spring配置文件来实现。
1 2
- SpringMVC利用注解实现异常处理
- SpringMVC利用注解实现异常处理
- springmvc--ResponseStatus注解处理异常
- springmvc注解开发-高级之异常处理
- springMvc 自定义注解以及自定义异常处理
- springMvc基于注解的异常处理
- SpringMVC 使用注解统一异常处理
- springMVC实现全局异常处理
- Springmvc异常处理【Springmvc】
- springmvc 统一异常处理 实现 HandlerExceptionResolver接口
- SpringMVC实现全局异常捕获处理
- springMVC使用@ControllerAdvice实现异常处理
- springMVC使用@ControllerAdvice实现异常处理
- 利用HandlerExceptionResolver对SpringMVC进行统一异常处理
- SpringMVC利用AOP实现自定义注解记录日志
- SpringMVC利用AOP实现自定义注解记录日志
- SpringMVC利用AOP实现自定义注解记录日志
- SpringMVC利用AOP实现自定义注解记录日志
- java中JVM的原理
- Web Api 测试
- median of two sorted arrays
- 友情链接
- CentOS6.5安装Chromium谷歌浏览器
- SpringMVC利用注解实现异常处理
- IOS SDK详解之CALayer(二)
- JAVA给方法传递数组
- 波哥学JAVA,定义类 声明属性 创建对象 实例化对象 对象调用属性或者方法
- Linux Namespaces机制
- java List 的两种常用实现类ArrayList和linkedList
- csdn上创建一个博客
- FileInputStream、FileOutputStream的应用
- vb.net正则表达式快速入门(1)