一、异常处理思路

  异常捕获的是unchecked型异常,因为checked异常在代码中年已经处理过,当然是在使用try-catch处理。这里首先使用ExceptionHandler捕获全局异常,这样如果是程序中有运行时异常就可以被随时捕获到,并将必要信息返回给调用者。对于使用try-catch捕获的异常,先创建自定义的运行时异常类,然后手动抛出。另外,在service使用unchecked异常可以触发事务回滚。

二、try-catch手动抛出异常代码演示

spingboot全局异常创建:

package com.dbzx.exception;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice; import com.dbzx.common.ResultModel; /**
* 拦截异常后返回json信息,如果需要返回html页面,需要通过ModelAndView返回
* @author
*
*/
@RestControllerAdvice
public class JsonResultExceptionHandler { @ExceptionHandler(value = Exception.class)
public ResultModel defaultErrorHandler(HttpServletRequest req,
Exception e) throws Exception { e.printStackTrace();
return ResultModel.errorException("异常信息:"+e.getMessage());
}
}

自定义异常类:

package com.dbzx.exception;

public class CustomUncheckException extends RuntimeException{

    /**
*
*/
private static final long serialVersionUID = 1L; public CustomUncheckException() {
super();
} public CustomUncheckException(String msg) {
super(msg);
} public CustomUncheckException(String msg,Throwable cause) {
super(msg,cause);
} }

调用代码:

package com.dbzx.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import com.dbzx.common.ResultModel;
import com.dbzx.exception.CustomUncheckException;
import com.dbzx.service.UserService; @RestController
@RequestMapping("dbzx")
public class HelloController { @Autowired
UserService userService; @RequestMapping("/hello")
public ResultModel hello() { try {
int i = 1 / 0;
} catch (Exception e) {
throw new CustomUncheckException(e.getMessage());
}
return ResultModel.ok("hello");
}
}

调用结果:

{
"status": 555,
"msg": "异常信息:/ by zero",
"data": null
}

springboot异常处理方式的更多相关文章

  1. SpringBoot学习15:springboot异常处理方式5(通过实现HandlerExceptionResolver类)

    修改异常处理方式4中的全局异常处理controller package com.bjsxt.exception; import org.springframework.context.annotati ...

  2. SpringBoot学习14:springboot异常处理方式4(使用SimpleMappingExceptionResolver处理异常)

    修改异常处理方法3中的全局异常处理Controller即可 package bjsxt.exception; import org.springframework.context.annotation ...

  3. SpringBoot学习13:springboot异常处理方式3(使用@ControllerAdvice+@ExceptionHandle注解)

    问题:使用@ExceptionHandle注解需要在每一个controller代码里面都添加异常处理,会咋成代码冗余 解决方法:新建一个全局异常处理类,添加@ControllerAdvice注解即可 ...

  4. SpringBoot学习12:springboot异常处理方式2(使用@ExceptionHandle注解)

    1.编写controller package com.bjsxt.controller; import org.springframework.stereotype.Controller; impor ...

  5. SpringBoot学习11:springboot异常处理方式1(自定义异常页面)

    SpringBoot 默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制.一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求.在 sprin ...

  6. SpringBoot: 15.异常处理方式5(通过实现HandlerExceptionResolver类)(转)

    修改异常处理方式4中的全局异常处理controller package com.bjsxt.exception; import org.springframework.context.annotati ...

  7. SpringMVC 三种异常处理方式

    SpringMVC 三种异常处理方式 在 SpringMVC, SpringBoot 处理 web 请求时, 若遇到错误或者异常,返回给用户一个良好的错误信息比 Whitelabel Error Pa ...

  8. SpringBoot异常处理统一封装我来做-使用篇

    SpringBoot异常处理统一封装我来做-使用篇 简介 重复功能我来写.在 SpringBoot 项目里都有全局异常处理以及返回包装等,返回前端是带上succ.code.msg.data等字段.单个 ...

  9. Springboot异常处理和自定义错误页面

    1.异常来源 要处理程序发生的异常,首先需要知道异常来自哪里? 1.前端错误的的请求路径,会使得程序发生4xx错误,最常见的就是404,Springboot默认当发生这种错误的请求路径,pc端响应的页 ...

随机推荐

  1. Linux 进程树查看工具 pstree

    pstree 是 Linux 下的一个用于展示进程树结构的工具,类似于 tree 展示目录树一样,可视化地查看进程的继承关系.pstree 工具其实是 PSmisc 工具集的成员之一,PSmisc 工 ...

  2. App3种开发方式的优劣分析:原生、混合和H5

    App混合开发(英文名:Hybrid App),是指在开发一款App产品的时候为了提高效率.节省成本即利用了原生的开发技术还应用了HTML5开发技术,是原生和HTML5技术的混合应用.目前App的开发 ...

  3. apply() 函数家族介绍

    apply() 函数算是R语言中很基础的一个函数,同时还有 sapply()  lapply()  tapply() 函数精简了 apply() 函数的用法. apply() 函数是一个很R语言的函数 ...

  4. 每日一问:你了解 Java 虚拟机结构么?

    对于从事 C/C++ 程序员开发的小伙伴来说,在内存管理领域非常头疼,因为他们总是需要对每一个 new 操作去写配对的 delete/free 代码.而对于我们 Android 乃至 Java 程序员 ...

  5. 【技术博客】利用Python将markdown文档转为html文档

    利用Python将markdown文档转为html文档 v1.0 作者:FZK 元素简单的md文件 Python中自带有一个markdown库,你可以直接这样使用 md_file = open(&qu ...

  6. libevent笔记4:Filter_bufferevent过滤器

    Filter_bufferevent是一种基于bufferevent的过滤器,其本身也是一个bufferevent.能够对底层bufferevent输入缓存区中的数据进行操作(加/解密等)后再读取,同 ...

  7. MVC发布出现:未能将文件bin\xxx.xml 复制到 obj\Release\PackageTmp\bin\xxx.xml,未能找到文件

    之前写的项目好好的,也可以发布,然后今天要发布MVC项目,一直报错,报下面这个错误 莫名其妙搞了好久,没搜到合理的解决方案,结果就只能瞎搞了. 突然想起了,我前几天犯贱把项目根目录下的bin文件夹和o ...

  8. sbt 安装

    此次安装实在windows 下进行的 1.官网下载sbt 2.安装并配置环境变量 path  中添加: 3.更改sbt配置文件 1)修改C:\notos\software\sbt\conf\sbtco ...

  9. spring boot 从开发到部署(二)—重启服务

    上篇中,我们开发并部署上线了一个 spring boot 项目.现在需要编写服务重启脚本,保证服务器重启后能够自动的运行我们的项目. /home/web/sprint-web/restart-happ ...

  10. 手机上的unity路径

    转载自:https://www.xuanyusong.com/archives/2656 Application.dataPath路径在PC上无论是Editor还是运行时毫无压力非常万能,但是在手机上 ...