1. 全局异常的配置

1. 创建异常处理类

package com.test.spring_boot_demo.domain;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.RestControllerAdvice;

import javax.servlet.http.HttpServletRequest;

import java.util.HashMap;

import java.util.Map;

@RestControllerAdvice

public class CustomExtHandler {

private static final Logger LOG = LoggerFactory.getLogger(CustomExtHandler.class);

// 捕获全局异常,处理所有不可知的异常

@ExceptionHandler(value = Exception.class)

// @ResponseBody

Object handleException(Exception e, HttpServletRequest request) {

LOG.error("url {}, msg {}", request.getRequestURL(), e.getMessage());

Map map = new HashMap<>();

map.put("code", "100");

map.put("msg", e.getMessage());

map.put("url", request.getRequestURL());

return map;

}

}

使用 @RestControllerAdvice 注解,可以不需要 @ResponseBody 注解

2. 创建controller接口

@GetMapping("/test/exception")

public Object testException() {

int n = 1/0;

return "test exception";

}

3. 访问测试

浏览器访问地址

http://localhost:8080/test/exception

返回结果

{"msg":"/ by zero","code":"100","url":"http://localhost:8080/test/exception"}

2. 触发异常返回自定义页面

1. 官网介绍

2. 添加模板引擎依赖

org.springframework.boot

spring-boot-starter-thymeleaf

3. 添加自定义异常类

package com.test.spring_boot_demo.domain;

public class MyException extends RuntimeException {

private String code;

private String msg;

public MyException(String code, String msg) {

this.code = code;

this.msg = 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;

}

}

4. 添加自定义异常监听器

@ExceptionHandler(value = MyException.class)

Object handleMyException(MyException e) {

ModelAndView modelAndView = new ModelAndView();

modelAndView.setViewName("error.html");

modelAndView.addObject("msg", e.getMessage());

return modelAndView;

}

5. 添加Http请求接口

@GetMapping("/test/myexception")

public Object myexc() {

throw new MyException("500", "my ext 异常");

}

6. 测试

测试:浏览器访问

http://localhost:8080/test/myexception

结果:跳转到新的页面

出异常 template

springboot 监听所有异常_SpringBoot 全局异常配置及返回自定义页面相关推荐

  1. springboot 监听所有异常_SpringBoot——目前Java开发最流行的框架(一)

    [SpringBoot] 主要内容 Spring Boot简介 第一个基于Spring Boot的SpringMVC项目 Spring Boot配置文件 Spring Boot项目结构 Spring ...

  2. vue监听路由的变化,跳转到同一个页面时,Url改变但视图未重新加载问题

    vue监听路由的变化,跳转到同一个页面时,Url改变但视图未重新加载问题 解决方法: 添加路由监听,路由改变时执行监听方法 methods:{fetchData(){console.log('路由发送 ...

  3. vue监听浏览器刷新和关闭事件,并在页面关闭/刷新前发送请求

    vue监听浏览器刷新和关闭事件,并在页面关闭/刷新前发送请求 1.需求背景: 2.需求分析: 3.实现方式: 4.实现方式解析: 1)浏览器页面事件基础 2)在mounted监听beforeunloa ...

  4. java报错空指针异常_springboot全局异常捕获,真香

    全局异常捕获 什么是异常?程序在启动或者运行时没有按照预期的执行,在执行途中发生某种未知的错误,导致程序非正常停止或者报错. 在我们的程序中,肯定会伴随着很多的异常,启动时:空对象.找不到数据库.用户 ...

  5. SpringBoot监听redis订阅监听和发布订阅

    前言 我们可以在redis中发布一条订阅到通道中,所有监听了这个通道的都可以收到这个发布的内容! redis订阅监听配置类 代码如下: RedisListenerConfig.java package ...

  6. SpringBoot监听redis过期key

    开启过期监听 vim /etc/redis.conf 取消notify-keyspace-events Elg的注释 pom.xml 添加: <dependency><groupId ...

  7. Oracle Net Configuration(监听程序和网络服务配置)

    1.在Oracle服务端和客户端都安装完之后,就需要配置监听程序和本地网络服务,以便外部程序和工具的访问,所以Oracle提供了两款自带的工具来配置它们分别是 Net Configuration.Ne ...

  8. nginx修改监听端口号8080_Nginx + Tomcat 配置

    这里使用Nginx解析域名,做出域名到Tomcat的映射 不多说 贴代码 Nginx 在http下 upstream tomcat { server 127.0.0.1:8080; } server ...

  9. 七十八、SpringBoot监听rabbitmq和创建交换器,队列

    @Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 文章目录 AmqpAdm ...

最新文章

  1. [名词解释] RIAD磁盘阵列
  2. 解决 Git: There is no tracking information for the current branch.的问题
  3. HashMap实现相同key,对value的操作
  4. sizeof和gcvt转换双精度函数的函数不是小结的小结
  5. Vue.js学习笔记四
  6. 常州win8如何禁用应用商店_Win8系统当中Windows defnedder安全软件应该如何禁用?...
  7. mysql的建库建表语句_SQL语句(建库、建表、修改语句)
  8. Linux下合并分解加密解密PDF文件
  9. 邢台市初中计算机考试,2019年邢台中考总分多少分,邢台中考各个科目多少分
  10. IEEE 浮点数编码规则
  11. 创建pytorch虚拟环境的版本问题
  12. 2021-03-25--通信网的身份认证与鉴权机制
  13. jde多目标_CVPR 2020 多目标跟踪算法JDE 训练
  14. 最新版华美淘客商城淘宝客程序源码
  15. CTF-Crypto学习1(软件加壳、反汇编、Babe64、Rijndael密码算法)
  16. 【分析】RBD Mirroring - 原理、概念、命令
  17. switch()语句中,default,break关键字作用,以及贯穿问题
  18. S3C2440上LCD驱动(FrameBuffer)实例开发讲解(一)
  19. 网易教育论坛:“状元”在美读大学:中国孩子都被教傻了
  20. 【C语言学习笔记】《C程序设计语言》读后感

热门文章

  1. matlab2c使用c++实现matlab函数系列教程- polyint函数
  2. matlab关于向量的基本操作
  3. MySQL引擎类型(三)
  4. mac中强大的快捷键
  5. leetcode ---双指针+滑动窗体
  6. Spring MVC自动为对象注入枚举数据
  7. 转 《pywinauto进行win32应用程序的测试》
  8. ASP.NET:插件化机制
  9. [转载] opengl能做什么_python能做什么
  10. [转载] Python3接口自动化框架:第三方openpyxl库读取excel之命名元组namedtuple承载数据