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 统一异常处理相关推荐

  1. ssm异常捕获和处理

    ssm异常捕获和处理 package exception;import lombok.extern.slf4j.Slf4j; import org.hibernate.HibernateExcepti ...

  2. ssm 异常捕获 统一处理_SpringMVC 统一异常处理介绍及实战

    背景 什么是统一异常处理 目标 统一异常处理实战 用 Assert(断言) 替换 throw exception 定义统一异常处理器类 扩展 总结 <Java 2019 超神之路> < ...

  3. ssm 异常捕获 统一处理_统一异常处理介绍及实战

    作者:sprinkle_lizhttp://www.jianshu.com/p/3f3d9e8d1efa 推荐阅读(点击即可跳转阅读) 1. SpringBoot内容聚合 2. 面试题内容聚合 3. ...

  4. ssm 异常捕获 统一处理_统一异常处理介绍及实战,看这篇就对了

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Don't let anyone steal your dreams. Fo ...

  5. 捕获异常_SpringBoot的异常处理全局异常捕获(图文资料)

    目标:springboot全局异常捕获 概述 1.自定义异常处理 package com.itheima.exeception; /** * @Author David老师 * @Descriptio ...

  6. Spring boot异常统一处理方法:@ControllerAdvice注解的使用、全局异常捕获、自定义异常捕获

    Spring boot异常统一处理方法:@ControllerAdvice注解的使用.全局异常捕获.自定义异常捕获 参考文章: (1)Spring boot异常统一处理方法:@ControllerAd ...

  7. 编码技巧——全局异常捕获统一的返回体业务异常

    在开发中,关于异常的捕获曾经是一个头疼的问题:本篇介绍几个方法,如何优雅的捕获处理业务异常: 已检查异常和未检查异常? 先做个介绍,异常Exception分为运行时异常(RuntimeExceptio ...

  8. Java项目构建基础:统一结果,统一异常,统一日志(好文推荐)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:永动的图灵机 juejin.im/post/5e073980 ...

  9. PHP的异常处理异常捕获错误类

    1.错误分类 Fatal Error:致命错误(脚本终止运行)E_ERROR // 致命的运行错误,错误无法恢复,暂停执行脚本E_CORE_ERROR // PHP启动时初始化过程中的致命错误E_CO ...

最新文章

  1. NSURLConnection的简单使用
  2. 怎么把圆角变直角_明式圆角柜的还原(下)——信民木工DIY达人大赛作品
  3. Vue2 源码漫游(二)
  4. Halcon算子翻译——dev_set_line_width
  5. leetcode 206 Reverse Linked List
  6. [How TO]-windows安装wget工具
  7. mybatis处理集合、循环、数组和in等语句的使用
  8. python的基础字典_python 基础之字典一
  9. 有没有什么方法快速能找到导致软件崩溃的进程_手机软件闪退闪得怀疑人生?看我专治闪退二十年!...
  10. 手把手教你进行R语言的安装及安装过程中相关问题解决方案
  11. Comware 架构理解
  12. 龙卷风路径_和平精英龙卷风在哪里 龙卷风位置介绍
  13. UC Android官方下载,手机uc浏览器下载并安装-uc浏览器app最新版本v13.3.9.1119 安卓官方版 - 极光下载站...
  14. 剑斩楼兰的将军之路:多属性决策模型。
  15. python爬取链家新房_Python爬虫实战:爬取链家网二手房数据
  16. 考研英语二计算机词汇,考研英语词汇84分的一些经验
  17. 台式计算机开机黑屏,联想台式电脑开机黑屏出现英文字母,怎么办?
  18. 国家一级学会创办的期刊
  19. 1.4 爬虫-笔趣阁获取小说例子
  20. 产品:关键词与分类---人人都是产品经理day02

热门文章

  1. 将request中的所有参数存放到自定义的map中
  2. TF.VARIABLE和TENSOR的区别(转)
  3. LeetCode简单题之完成一半题目
  4. RabbitMQ超详细安装教程(Linux)
  5. Python:urllib2模块的基本使用
  6. [JS]在ACM模式下获取输入
  7. Android 逐帧动画(Frame)
  8. 微信小程序showModel使用注意
  9. SharePoint2010 -- 管理配置文件同步
  10. 周一02.3运行python程序的两种方式