ssm 异常捕获 统一处理_SSM 统一异常处理
SSM 统一异常处理
spring创建中, 处理异常可以使用try-cache处理, 也可以使用spring提供的统一异常处理
在spring中, 统一处理异常有2中方式
注解方式
@ExceptionHandler 作用于方法上
@controlleradvice 作用于类上
接口方式
HandlerExceptionResolver 接口
注解方式
注解方式用起来也是比较方便的, 注解方式有两种
@ExceptionHandler单独使用, 前提是抛出异常的方法和处理异常的方法在同一个controller下
@controlleradvice和@ExceptionHandler 配合使用, 如果当前controller下没有处理异常的方法, 则去找@controlleradvice描述的类下面处理异常的方法
单独使用@ExceptionHandler
此方式仅限于处理异常的方法和抛出异常的方法在同一个controller里
次注解的参数是可以处理异常的类型字节码对象, 例如写RuntimeException.class则处理此异常以及其子类的异常, 处理异常的方法参数和注解的参数类型一般来说是一致的.
@Controller
public class GlobalController {
/**
* 用于处理异常的
*/
@ExceptionHandler({MyException.class})
public String exception(MyException e) {
System.out.println(e.getMessage());
e.printStackTrace(); // 控制台打印报错信息
return "exception";
}
// 此请求会抛出异常
@RequestMapping("/index")
public String test() {
throw new MyException("出错了!");
return "index";
}
}
使用 @ControllerAdvice+ @ ExceptionHandler 注解
@ ExceptionHandler 需要进行异常处理的方法必须与出错的方法在同一个Controller里面。那么当代码加入了 @ControllerAdvice,则不需要必须在同一个 controller 中了。这也是 Spring 3.2 带来的新特性。从名字上可以看出大体意思是控制器增强。 也就是说,@controlleradvice + @ ExceptionHandler 也可以实现全局的异常捕捉。
/**
* @ControllerAdvice 注解描述的类, spring mvc会分为他是
* 一个控制层全局异常的处理
*/
@ControllerAdvice
public class GlobalExceptionHandler {
/**
* @ExceptionHandler 注解描述的方法为异常处理方法,
* 次注解中定义的异常类型, 为这个方法可以处理的异常类型, 它可以处理
* 此异常以及这个异常类型的子类类型的异常
* @param e
* @return
*/
@ExceptionHandler(RuntimeException.class)
@ResponseBody // 告诉spring mvc最终相应结果转换为json格式返回, 如果返回的是页面可不写次注解
public JsonResult doHandleRuntimeException(RuntimeException e) {
e.printStackTrace();
return new JsonResult(e);
}
// .....等多个处理异常的方法
}
实现 HandlerExceptionResolver 接口
即mvc中所有的异常都可以在这里进行处理
@Component
public class ExceptionTest implements HandlerExceptionResolver{
/**
* TODO 简单描述该方法的实现功能(可选).
* @see org.springframework.web.servlet.HandlerExceptionResolver#resolveException(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, java.lang.Exception)
*/
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) {
System.out.println("This is exception handler method!");
return null;
}
}
ssm 异常捕获 统一处理_SSM 统一异常处理相关推荐
- ssm异常捕获和处理
ssm异常捕获和处理 package exception;import lombok.extern.slf4j.Slf4j; import org.hibernate.HibernateExcepti ...
- ssm 异常捕获 统一处理_SpringMVC 统一异常处理介绍及实战
背景 什么是统一异常处理 目标 统一异常处理实战 用 Assert(断言) 替换 throw exception 定义统一异常处理器类 扩展 总结 <Java 2019 超神之路> < ...
- ssm 异常捕获 统一处理_统一异常处理介绍及实战
作者:sprinkle_lizhttp://www.jianshu.com/p/3f3d9e8d1efa 推荐阅读(点击即可跳转阅读) 1. SpringBoot内容聚合 2. 面试题内容聚合 3. ...
- ssm 异常捕获 统一处理_统一异常处理介绍及实战,看这篇就对了
点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Don't let anyone steal your dreams. Fo ...
- 捕获异常_SpringBoot的异常处理全局异常捕获(图文资料)
目标:springboot全局异常捕获 概述 1.自定义异常处理 package com.itheima.exeception; /** * @Author David老师 * @Descriptio ...
- Spring boot异常统一处理方法:@ControllerAdvice注解的使用、全局异常捕获、自定义异常捕获
Spring boot异常统一处理方法:@ControllerAdvice注解的使用.全局异常捕获.自定义异常捕获 参考文章: (1)Spring boot异常统一处理方法:@ControllerAd ...
- 编码技巧——全局异常捕获统一的返回体业务异常
在开发中,关于异常的捕获曾经是一个头疼的问题:本篇介绍几个方法,如何优雅的捕获处理业务异常: 已检查异常和未检查异常? 先做个介绍,异常Exception分为运行时异常(RuntimeExceptio ...
- Java项目构建基础:统一结果,统一异常,统一日志(好文推荐)
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:永动的图灵机 juejin.im/post/5e073980 ...
- PHP的异常处理异常捕获错误类
1.错误分类 Fatal Error:致命错误(脚本终止运行)E_ERROR // 致命的运行错误,错误无法恢复,暂停执行脚本E_CORE_ERROR // PHP启动时初始化过程中的致命错误E_CO ...
最新文章
- NSURLConnection的简单使用
- 怎么把圆角变直角_明式圆角柜的还原(下)——信民木工DIY达人大赛作品
- Vue2 源码漫游(二)
- Halcon算子翻译——dev_set_line_width
- leetcode 206 Reverse Linked List
- [How TO]-windows安装wget工具
- mybatis处理集合、循环、数组和in等语句的使用
- python的基础字典_python 基础之字典一
- 有没有什么方法快速能找到导致软件崩溃的进程_手机软件闪退闪得怀疑人生?看我专治闪退二十年!...
- 手把手教你进行R语言的安装及安装过程中相关问题解决方案
- Comware 架构理解
- 龙卷风路径_和平精英龙卷风在哪里 龙卷风位置介绍
- UC Android官方下载,手机uc浏览器下载并安装-uc浏览器app最新版本v13.3.9.1119 安卓官方版 - 极光下载站...
- 剑斩楼兰的将军之路:多属性决策模型。
- python爬取链家新房_Python爬虫实战:爬取链家网二手房数据
- 考研英语二计算机词汇,考研英语词汇84分的一些经验
- 台式计算机开机黑屏,联想台式电脑开机黑屏出现英文字母,怎么办?
- 国家一级学会创办的期刊
- 1.4 爬虫-笔趣阁获取小说例子
- 产品:关键词与分类---人人都是产品经理day02