SpringBoot------全局异常捕获和自定义异常
1.添加Maven依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>top.ytheng</groupId><artifactId>springboot-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><scope>true</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build> </project>
2.添加自定义异常类
package top.ytheng.demo.domain;public class MyException extends RuntimeException {private static final long serialVersionUID = 1L;public MyException(String code, String msg) {this.code = code;this.msg = msg;}private String code;private String msg;public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}}
3.添加异常处理类
package top.ytheng.demo.domain;import java.util.HashMap; import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.servlet.ModelAndView;//如果返回的是Json格式的数据, //可以使用@ResponseBody+@ControllerAdvice替换@RestControllerAdvice @RestControllerAdvice //@ControllerAdvice public class CustomExtHandler {private static final Logger LOG = LoggerFactory.getLogger(CustomExtHandler.class);//捕获全局异常,处理所有不可知的异常@ExceptionHandler(value=Exception.class)//@ResponseBodypublic Object handleException(Exception e, HttpServletRequest request) {LOG.error("msg:{},url:{}", e.getMessage(), request.getRequestURL());Map<String, Object> map = new HashMap<>();map.put("code", 100);map.put("msg", e.getMessage());map.put("url", request.getRequestURL());return map;}//自定义异常//需要添加thymeleaf依赖//路径:src/main/resources/templates/error.html@ExceptionHandler(value=MyException.class)public Object handleMyException(MyException e, HttpServletRequest request) {//返回Json数据,由前端进行界面跳转//Map<String, Object> map = new HashMap<>();//map.put("code", e.getCode());//map.put("msg", e.getMsg());//map.put("url", request.getRequestURL());//return map;//进行页面跳转ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("error.html");modelAndView.addObject("msg", e.getMsg());return modelAndView;} }
4.添加异常控制器
package top.ytheng.demo.controller;import java.util.HashMap; import java.util.Map;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import top.ytheng.demo.domain.MyException;@RestController @RequestMapping("/exce") public class ExceptionController {@RequestMapping("/api/v1/exce")public Object testException() {Map<String, Object> map = new HashMap<>();map.put("name", "ytheng");map.put("pwd", 123456);int data = 1/0;return map;}@RequestMapping("/api/v1/myexce")public Object testMyException() {throw new MyException("500", "my ext异常");} }
5.添加启动类
package top.ytheng.demo;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication //等于下面3个 //@SpringBootConfiguration //@EnableAutoConfiguration //@ComponentScan public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}
6.添加文件配置application.properties
#端口号 server.port=8090#当前项目根目录下创建爱你日志文件 logging.file=C:\\Users\\tianheng\\eclipse-workspace\\springboot.log
7.添加error.html界面
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body><h1>错误信息界面</h1> </body> </html>
8.右键Run As启动项目,访问地址
http://localhost:8090/exce/api/v1/exce http://localhost:8090/exce/api/v1/myexce
另附:
转载于:https://www.cnblogs.com/tianhengblogs/p/9775610.html
SpringBoot------全局异常捕获和自定义异常相关推荐
- springBoot 全局异常方式处理自定义异常 @RestControllerAdvice + @ExceptionHandler
springBoot 全局异常方式处理自定义异常 @RestControllerAdvice + @ExceptionHandler 参考文章: (1)springBoot 全局异常方式处理自定义异常 ...
- Spring boot异常统一处理方法:@ControllerAdvice注解的使用、全局异常捕获、自定义异常捕获
Spring boot异常统一处理方法:@ControllerAdvice注解的使用.全局异常捕获.自定义异常捕获 参考文章: (1)Spring boot异常统一处理方法:@ControllerAd ...
- 全局异常捕获和自定义异常类
在代码执行中,不可避免的会出现报错信息.后端需要将这些报错信息告诉前端,前端才可以根据报错情况来给用户展示不同的页面 而后台的报错信息大多情况写前端人员都看不太懂,所以需要后盾人员对报错信息进行处理, ...
- 捕获异常_SpringBoot的异常处理全局异常捕获(图文资料)
目标:springboot全局异常捕获 概述 1.自定义异常处理 package com.itheima.exeception; /** * @Author David老师 * @Descriptio ...
- java报错空指针异常_springboot全局异常捕获,真香
全局异常捕获 什么是异常?程序在启动或者运行时没有按照预期的执行,在执行途中发生某种未知的错误,导致程序非正常停止或者报错. 在我们的程序中,肯定会伴随着很多的异常,启动时:空对象.找不到数据库.用户 ...
- Java 捕获 mybatis异常_3 springboot集成mybatis和全局异常捕获
mybatis有两种方式,一种是基于XML,一种是基于注解 springboot集成mybatis 首先先创建表,这里都简化了 DROP TABLE IF EXISTS `user`; CREATE ...
- springboot上传文件过大,全局异常捕获,客户端没有返回值
springboot上传文件过大,全局异常捕获,客户端没有返回值 参考文章: (1)springboot上传文件过大,全局异常捕获,客户端没有返回值 (2)https://www.cnblogs.co ...
- SpringBoot配置全局异常捕获
SpringBoot中自带的异常捕获机制返回的默认页面比较丑,对用户来说不够人性化.所以这篇文章来讲解SpringBoot钟自定义全局异常捕获. 本文的源码已经上传GitHub:https://git ...
- SpringBoot框架搭建(redis多数据源+数据库多数据源+全局异常捕获)
java骨架 目录结构 ├── mvnw ├── mvnw.cmd ├── pom.xml ├── README.md ├── src/ 源文件目录 │ ├── main │ │ ├── java │ ...
- Spring 全局异常捕获
引言 前后端分离开发,后台有时候会出现不可预知的异常(运行时异常),在实际生产中通常需要统一返回符合一定响应结构的异常信息给前端,这一方面可以避免用户看到后台的报错信息,一方面也是保护后端程序免受恶意 ...
最新文章
- 社会计算研究组研究方向
- 【加密解密】单表加密(Javascript实现)
- python基础练习(十)
- 利用Angular2的Observables实现交互控制
- centos安装jdk7
- 怎么用金蝶记kis账王查询账簿
- 一步一步实现自己的模拟控件(5)——隐藏类
- php的几种运行模式CLI、CGI、FastCGI、mod_php
- 你的心事我全知晓——心情日记小程序丨实战
- 【HDU - 6662】Acesrc and Travel(树形dp,博弈dp)
- 宿主机进程挂载到容器内_迄今为止最严重的容器逃逸漏洞:Docker cp命令漏洞分析(CVE201914271)...
- 华科00年计算机考研复试机试
- ORACLE多表查询优化
- css字竖排垂直居中显示,CSS--字体|垂直居中|background
- 美国自动驾驶汽车法规
- 腾讯云轻量应用服务器和云服务器的区别是什么?
- 10个 Istio 流量管理 最常用的例子,你知道几个?
- 饭局 男人必学 女人必知
- 深入理解生成对抗网络(GAN 基本原理,训练崩溃,训练技巧,DCGAN,CGAN,pix2pix,CycleGAN)
- K哥有点上头:坚持写作2年,收入100万!
热门文章
- 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)
- SQLHelper类
- 菜鸟学Java(十九)——WEB项目测试好帮手,Maven+Jetty
- cocos2d-x 弹出对话框
- apply的调用 http://bbs.51js.com/thread-82017-1-3.html
- AgileEAS.NET平台开发实例-药店系统-准备开发环境(上)
- webpack配置alias别名设置
- JAVA中LinkedLockingQueue的简单使用
- Axure RP Extension for Chrome安装
- 注解提高篇:自定义注解处理器(APT)