为什么要捕获异常?


我们开发中,经常运行时,代码会报错,这时候我们有可能抛出异常,而不是用try..catch来解决.而且现在前后端分离,如果不捕获异常的话,前端那边的人估计会被报的错搞得焦头烂额的.

springboot2.x是怎么自定义异常的?怎么捕获异常的?


我们自定义异常类,需要继承一个RuntimeException父类,并且包装好自己的异常类,一般是包装code(错误码),msg(错误信息).

/**
* 自定义异常类
*/
public class TestException extends RuntimeException{ Integer code;
String msg; public TestException(Integer code, String msg) {
super(msg);
this.code = code;
this.msg = msg;
} public Integer getCode() {
return code;
} public void setCode(Integer code) {
this.code = code;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
}
} 接着我们需要创建一个异常处理器,这里是来捕获异常的.
/**
* 异常处理控制器
*/
@ControllerAdvice
public class TestExceptionHandler { @ExceptionHandler(value = Exception.class) //一般是捕获最高级的exception类,或者你想捕获单独的一个异常类(比如我们前面创建的TestException,不过推荐这种,相对简洁)
@ResponseBody //返回数据以json数据传输
public JsonData Handler(Exception e){ //jsonData是我自定义的一个包装类,主要用于传输给前端的数据
if(e instanceof TestException){ //判断异常类型
TestException testException = (TestException) e;
return JsonData.buildError(testException.getMsg(),testException.getCode());
}else{
return JsonData.buildError("全局异常,未知错误!");
}
}
}

												

springboot2.x如何配置全局自定义异常的更多相关文章

  1. SpringBoot配置全局自定义异常

    不同于传统集中时Springmvc 全局异常,具体查看前面的章节https://www.cnblogs.com/zwdx/p/8963311.html 对于springboot框架来讲,这里我就介绍一 ...

  2. asp.net mvc 3 配置全局错误处理 Web.config中设置CustomError

    摘自: http://www.myexception.cn/web/1130191.html asp.net mvc 配置全局异常处理 Web.config中设置CustomError Web.con ...

  3. mycat 配置全局表

    在已配置全局序列号的基础上 1.schema.xml <table name="hf_ctrlorder_split_config" primaryKey="HF_ ...

  4. Linux配置全局jdk

    Linux配置全局jdk 1.确保相应文件夹下有apache-tomcat和jdk的压缩文件 注意:jdk文件必须为适应Linux版本的文件 (如果已经有了相应文件,可以跳过以下第2-3个步骤) 2. ...

  5. maven配置全局的jdk和配置局部的jdk

    配置全局的jdk需要修改maven的setting.xml文件 <profile> <id>jdk17</id> <activation> <ac ...

  6. springboot2.0 JPA配置自定义repository,并作为基类BaseRepository使用

    springboot2.0 JPA配置自定义repository,并作为基类BaseRepository使用 原文链接:https://www.cnblogs.com/blog5277/p/10661 ...

  7. 通过Application配置全局的Context

    我本来配置了全局变量,但是使用SharedPreferences时总是报空指针异常,报错如下: FATAL EXCEPTION: main Process: com.XXX.xxx, PID: 192 ...

  8. asp.net core webapi项目配置全局路由

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.前言 在开发项目的过程中,我新创建了一个controller,发现vs会给我们直接在controller头添加前缀,比如[Ro ...

  9. SpringMVC配置全局日期转换器,处理日期转换异常

    Spring 3.1.1使用Mvc配置全局日期转换器,处理日期转换异常链接地址: https://www.2cto.com/kf/201308/236837.html spring3.0配置日期转换可 ...

随机推荐

  1. day01.2-计算机网络协议

    注:本文摘自林海峰老师的博客,作为个人学习笔记,日后方便阅读,原文详见链接www.cnblogs.com/linhaifeng/articles/5937962.html 一.  ISO协议     ...

  2. day-15递归与函数

    生成器send方法 send的工作原理 1.send发生信息给当前停止的yield 2.再去调用__next__()方法,生成器接着往下指向,返回下一个yield值并停止 # 案例: persons ...

  3. 降临(线段树优化dp)

    降临 选定点i会有代价\(c_i\),如果一个区间j内的点全被选择,就可以获得回报\(p_j\).点数和区间个数\(<1e5\). 还以为是线段树优化网络流(50万个点200万条边看上去很可做的 ...

  4. vue_cli下开发一个简单的模块权限系统之展现数据

    这个页面是用户列表:userList就是第二张截图中的data里面的userList vue中只要改变存放数据的载体就会实现页面改变,mounted的意思是页面加载时执行这里面的函数,我们需要在页面加 ...

  5. 树形DP【洛谷P3047】 [USACO12FEB]附近的牛Nearby Cows

    P3047 [USACO12FEB]附近的牛Nearby Cows 农民约翰已经注意到他的奶牛经常在附近的田野之间移动.考虑到这一点,他想在每一块土地上种上足够的草,不仅是为了最初在这片土地上的奶牛, ...

  6. POJ3050 -- Hopscotch 简单的dfs搜索

    原题链接:http://poj.org/problem?id=3050 (一些文字过会儿再说现在有事儿) #include <cstdio> #include <set> us ...

  7. kuangbin专题十二 HDU1087 Super Jumping! Jumping! Jumping! (LIS)

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  8. PHP 实现实现多线程

    前言 前些天帮同事查一个问题,第一次接触到了 PHP 的多线程,原以为 PHP 普遍都是单线程模型,并不适合多线程领域,花些时间翻了几个多线程的项目源码之后,发现 PHP 的多线程也颇有可取之处,活用 ...

  9. 批量mvn 打包 bat文件命令

    @echo off cd /d "E:\project\Branches\Source\" svn up mvn clean install -Dmaven.test.skip=t ...

  10. Js 处理 错误图片...(不用jquery)

    document.addEventListener("error", function (e) { var elem = e.target; if (elem.tagName.to ...