springboot优雅的异常处理
springboot全局异常处理
@ControllerAdvice
尽管springboot会对一些异常进行处理,不过对于开发者来说,这还不太便于维护,因此我们需要自己来对异常进行统一的捕获与处理。这里就需要使用上一个注解@ControllerAdvice。
@ControllerAdvice注解:
ControllerAdvice拆分开来就是Controller Advice ,关于Advice,在Spring Aop中可知其是用于封装一个切面所有属性,包括切入点和需要织入的切面逻辑。这里ContrllerAdvice也可以这么理解,其抽象级别应该是用于对Controller进行“切面”环绕的,而具体的业务织入方式则是通过结合其他的注解来实现的。
简单来讲,@ControllerAdvice就是一个Controller增强器,可以对Controller中被@RequestMapping注解的方法增加一些逻辑处理。
常见使用方式:
- 结合方法型注解@ExceptionHandler,用于捕获Controller中抛出的指定类型的异常,从而达到不同类型的异常区别处理的目的
- 结合方法型注解@InitBinder,用于request中自定义参数解析方式进行注册,从而达到自定义指定格式参数的目的
- 结合方法型注解@ModelAttribute,表示其标注的方法将会在目标Controller方法执行之前执行
全局异常处理类
这里我们使用@ControllerAdvice注解来实现全局异常处理。
声明了全局异常处理类之后,我们还需要通过@ExceptionHandler来捕获异常
而这里对异常的处理方式也由我们根据需求而定,因为这里就相当于是一个参数为捕获到的异常的Controller,所以我们可以实现直接返回异常信息,也可以跳转页面等一系列操作。
这里简化一下,就直接捕获Excecption,实际使用中可以再细化到各种不同的异常进行不同的处理。
@ControllerAdvice
public class BaseExceptionHandler {
    /**
     * 异常处理
     * @param e
     * @return
     */
    @ExceptionHandler
    @ResponseBody
    public Result error(Exception e){
        e.printStackTrace();
        return new Result(false, StatusCode.ERROR,e.getMessage()+"请联系XXX进行处理");
    }
}
springboot优雅的异常处理的更多相关文章
- springboot优雅实现异常处理
		前言 在平时的 API 开发过程中,总会遇到一些错误异常没有捕捉到的情况.那有的小伙伴可能会想,这还不简单么,我在 API 最外层加一个 try...catch 不就完事了. 哈哈哈,没错.这种方法简 ... 
- SpringBoot优雅的全局异常处理
		前言 本篇文章主要介绍的是SpringBoot项目进行全局异常的处理. SpringBoot全局异常准备 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码. 开发准备 环境要求 JD ... 
- springboot 常用的异常处理方式
		springboot常用的异常处理推荐: 一.创建一个异常控制器,并实现ErrorController接口: package com.example.demo.controller; import o ... 
- Springboot项目统一异常处理
		Springboot项目统一异常处理 一.接口返回值封装 1. 定义Result对象,作为通用返回结果封装 2. 定义CodeMsg对象,作为通用状态码和消息封装 二.定义全局异常类 三.定义异常处理 ... 
- SpringBoot实战 之 异常处理篇
		在互联网时代,我们所开发的应用大多是直面用户的,程序中的任何一点小疏忽都可能导致用户的流失,而程序出现异常往往又是不可避免的,那该如何减少程序异常对用户体验的影响呢?其实方法很简单,对异常进行捕获,然 ... 
- SpringBoot中对于异常处理的提供的五种处理方式
		1.自定义错误页面 SpringBoot 默认的处理异常机制:SpringBoot默认的已经提供了一套处理异常的机制.一旦程序中出现了异常,SpringBoot会向/error的url发送请求.在Sp ... 
- SpringBoot整合全局异常处理&SpringBoot整合定时任务Task&SpringBoot整合异步任务
		============整合全局异常=========== 1.整合web访问的全局异常 如果不做全局异常处理直接访问如果报错,页面会报错500错误,对于界面的显示非常不友好,因此需要做处理. 全局异 ... 
- Springboot 优雅停止服务的几种方法
		在使用Springboot的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭.而且一些没有执行完的程序就会直接退出 ... 
- SpringBoot优雅地配置日志
		本文主要给大家介绍SpringBoot中如何通过sl4j日志组件优雅地记录日志.其实,我们入门 JAVA 的第一行代码就是一行日志,那你现在还在使用System.out.println("H ... 
随机推荐
- 使用HTML、jquery、DOM创建文本
			<html> <head> <meta charset="utf-8"> <meta charset="utf-8"& ... 
- 你只会用 map.put?试试 Java 8 compute ,操作 Map 更轻松!
			今天栈长分享一个实用的 Java 8 开发技能,那就是 Map 接口中增加的 compute 方法,给 Map 集合计算更新用的. compute简介 如下所示,Java 8 在 Map 和 Conc ... 
- Linux 软链接link/ln -s
			在Linux中,链接分为软的和硬的,至于两者之间有什么差别,大家可以参考下https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-li ... 
- Java高并发测试框架JCStress
			前言 如果要研究高并发,一般会借助高并发工具来进行测试.JCStress(Java Concurrency Stress)它是OpenJDK中的一个高并发测试工具,它可以帮助我们研究在高并发场景下JV ... 
- 常用Linux操作
			常用Linux操作 这里我使用的是Git进行的Linux操作,如果你有服务器.或者LInux系统可以直接尝试 首先保证自己电脑上成功安装好了Git,右键鼠标: 随便找一个文件夹(我这里使用的是桌面的G ... 
- 报错:Method definition shorthands are not supported by current JavaScript version
			当你在html中使用调用js中的方法时,会出现这行报错: method definition shorthands are not supported by current JavaScript ve ... 
- 【笔记】《Redis设计与实现》chapter8 对象
			8.1 对象的类型与编码 Redis中的每个对象都由一个redisObject结构表示,该结构中和保存数据有关的三个属性分别是type属性.encoding属性和ptr属性 typedef struc ... 
- Linux下Matlab的安装
			1 概述 笔者环境Manjaro,本来想直接通过yay安装的,但无奈失败了,于是直接从官网下载进行安装. 2 下载安装包 Matlab官网可以戳这里,点击右上角的Get MATLAB就可以下载了: 没 ... 
- Salesforce学习之路(十)Aura组件工作原理
			很喜欢曾经看到的一句话:以输出倒逼输入.以输出的形式强制自己学习,确实是高效的学习方式,真的很棒.以下仅为个人学习理解,如有错误,欢迎指出,共同学习. 1. 什么是Lightning Componen ... 
- Cube painting UVA - 253
			We have a machine for painting cubes. It is supplied with three different colors: blue, red and gre ... 
