SpringBoot详解实现自定义异常处理页面方法

目录
  • 1.相关介绍
  • 2.代码实现
  • 3.运行测试

1.相关介绍

当发生异常时, 跳转到我们自定义的异常处理页面.

SpringBoot中只需在静态资源目录下创建一个error文件夹, 并把异常处理页面放入其中, 页面的命名与异常错误代码对应, 如404.html, 500.html.

5xx.html可以对应所有错误代码为5开头的错误

默认静态资源目录为类路径(resources)下的:

  • /static
  • /public
  • /resources
  • /META-INF/resources

2.代码实现

HelloController

package com.limi.springboottest2.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
    @ResponseBody
    @GetMapping("/test1")
    public String test1(){
        int i = 10/0; //模拟500异常
        return "ok";
    }
}

404.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>这是自定义404</h1>
</body>
</html>

5xx.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>这是自定义5xx</h1>
</body>
</html>

3.运行测试

测试404

测试500

使用postman测试

{
    "timestamp": "2022-06-22T04:12:13.740+00:00",
    "status": 500,
    "error": "Internal Server Error",
    "trace": "java.lang.ArithmeticException: / by zero\r\n\tat com.limi.springboottest2.controller.HelloController.test1(HelloController.java:14),
    "message": "/ by zero",
    "path": "/test1"
}

返回的信息我们可以使用模板引擎(如thymeleaf)获取并写入自定义的异常处理页面中

到此这篇关于SpringBoot详解实现自定义异常处理页面方法的文章就介绍到这了,更多相关SpringBoot异常处理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot中异常处理实战记录

    目录 一.背景 二.需求 三.编写一些异常基础代码 四.注意事项 五.总结 六.代码实现 七.参考文档 一.背景 在我们编写程序的过程中,程序中可能随时发生各种异常,那么我们如何优雅的处理各种异常呢? 二.需求 1.拦截系统中部分异常,返回自定义的响应. 比如: 系统发生HttpRequestMethodNotSupportedException异常,我们需要返回如下信息. http的状态码:返回 405 { code: 自定义异常码, message: 错误消息 } 2.实现自定义异常的拦截

  • SpringBoot中如何进行统一异常处理

    目录 1.处理前 2.进行系统异常全局处理 3.进行自定义异常处理 总结 如何在SpringBoot项目里进行统一异常处理 需要了解的知识 @ControllerAdvice的作用 1.处理前 异常代码 /** * 根据id获取医院设置 * * @param id 查看的id编号 * @return */ @ApiOperation(value = "根据id获取医院设置") @GetMapping("/findHospById/{id}") public Resu

  • 深入聊一聊springboot项目全局异常处理那些事儿

    目录 前言 问题一:全局异常抽离出来后,业务错误码如何定义? 问题二:全局异常因引入了和业务相同的依赖jar,但jar存在版本差异 问题三:引入maven optional标签后,因业务没引入全局异常需要的jar,导致项目启动报错 总结 demo链接 前言 之前我们业务团队在处理全局异常时,在每个业务微服务中都加入了@RestControllerAdvice+@ExceptionHandler来进行全局异常捕获.某次领导在走查代码的时候,就提出了一个问题,为什么要每个微服务项目都要自己在写一套全

  • SpringBoot全局异常处理方案分享

    目录 一 业务场景 二 全局系统异常类 一)全局系统异常类 二) 包装异常返回结果给前端,修改自定义异常 三 返回案例 一 业务场景 调用接口时需要对属性进行校验,比如属性长度,当属性为邮箱时校验邮箱格式等,这时候要要用到@Validated注解,在使用这个注解后发现出现了一个问题,调用接口后并没有返回我们想要的报错结果,而是返回了 "message": "Validation failed for object='IMMessageSend'. Error count: 1

  • Java Springboot全局异常处理

    目录 前言 一.思路? 二.步骤 1.自定义接口: 2.自定义错误枚举 3.自定义异常类 4.异常捕获 5.在代码中抛异常 总结 前言 对于作为菜鸟程序员的我来说,经常在controller使用try-catch 来包裹住我的service层代码,首页,他及其的不好看,其次,每个方法都有这种代码块,思考有没有办法去掉它,并且优雅的处理异常.这就是今天要说的全局异常捕获 提示:以下是本篇文章正文内容,下面案例可供参考 一.思路? springboot提供了全局异常处理的注解,我们需要弄明白的是.扑

  • springboot实现全局异常处理及自定义异常类

    目录 全局异常处理及自定义异常类 全局异常处理 定义一个业务异常的枚举 全局异常处理配置 springbootRestful使用 springboot返回ModelAndView 全局异常处理及自定义异常类 全局异常处理 定义一个处理类,使用@ControllerAdvice注解. @ControllerAdvice注解:控制器增强,一个被@Component注册的组件. 配合@ExceptionHandler来增强所有的@requestMapping方法. 例如:@ExceptionHandl

  • SpringBoot实现全局异常处理方法总结

    目录 全局异常处理 配置全局异常 全局异常处理的升级 加入自定义异常处理 处理Controller数据绑定.数据校验的异常 GlobalExceptionHandler全部代码 总结 在项目开发中出现异常时很平常不过的事情,我们处理异常也有很多种方式,可能如下: public int div(int a ,int b){ int c=0; try{ c=a/b; }catch (Exception ex){ ex.printStackTrace(); } return c; } 如果我们这样处理

  • SpringBoot全局异常处理方式

    目录 SpringBoot全局异常处理 springboot全局异常处理--@ControllerAdvice+ExceptionHandler 一.全局捕获异常后,返回json给浏览器 二.全局捕获异常后,返回页面给浏览器 SpringBoot全局异常处理 为了让客户端能有一个更好的体验,当客户端发送请求到服务端发生错误时服务端应该明确告诉客户端错误信息. SpringBoot内置的异常处理返回的界面太杂乱,不够友好.我们需要将异常信息做封装处理响应给前端.本文介绍的为将错误信息统一封装成如下

  • SpringBoot详解实现自定义异常处理页面方法

    目录 1.相关介绍 2.代码实现 3.运行测试 1.相关介绍 当发生异常时, 跳转到我们自定义的异常处理页面. SpringBoot中只需在静态资源目录下创建一个error文件夹, 并把异常处理页面放入其中, 页面的命名与异常错误代码对应, 如404.html, 500.html. 5xx.html可以对应所有错误代码为5开头的错误 默认静态资源目录为类路径(resources)下的: /static /public /resources /META-INF/resources 2.代码实现 H

  • SpringBoot详解整合Redis缓存方法

    目录 1.Spring Boot支持的缓存组件 2.基于注解的Redis缓存实现 3.基于API的Redis缓存实现 1.Spring Boot支持的缓存组件 在Spring Boot中,数据的缓存管理存储依赖于Spring框架中cache相关的org.springframework.cache.Cache和org.springframework.cache.CacheManager缓存管理器接口. 如果程序中没有定义类型为CacheManager的Bean组件或者是名为cacheResolve

  • SpringBoot详解自定义Stater的应用

    目录 1.SpringBoot starter机制 2.为什么要自定义starter 3.自定义starter的命名规则 4.使用自定义starter 1.SpringBoot starter机制 SpringBoot由众多Starter组成(一系列的自动化配置的starter插件),SpringBoot之所以流行,也是因为starter.starter是SpringBoot非常重要的一部分,可以理解为一个可拔插式的插件,正是这些starter使得使用某个功能的开发者不需要关注各种依赖库的处理,

  • SpringBoot详解shiro过滤器与权限控制

    目录 shiro过滤器 权限控制 动态配置权限 shiro过滤器 首先从客户端发来的所有请求都经过Shiro过滤器,如果用户没有认证的都打回去进行认证,认证成功的,再判断是否具有访问某类资源(公有资源,私有资源)的权限,如果没有权限,访问失败;如果有权限访问成功.注意:客户端传来的token要和realm中的认证信息进行相同规则的比较(加密算法要一致). 常见过滤器: 1.在shiro配置类中配置,使用 filterFactoryBean.setFilterChainDefinitionMa()

  • Springboot详解整合SpringSecurity实现全过程

    目录 使用Basic认证模式 使用form表形式登录 实现权限控制 自定义登录页面 结合数据库实现RBAC权限模型权限控制 java代码 动态绑定数据库所有权限 使用Basic认证模式 1.maven依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.

  • 详解Vue自定义指令及使用

    一.什么是指令 学习 vue 的时候肯定会接触指令,那么什么是指令呢? 在 vue 中提供了一些对于页面和数据更为方便的输出,这些操作就叫做指令,以 v-xxx 表示,比如 html 页面中的属性 <div v-xxx ></div> 比如在 angular 中 以 ng-xxx 开头的就叫做指令 指令中封装了一些 DOM 行为,结合属性作为一个暗号,暗号有对应的值,根据不同的值,会进行相关 DOM 操作的绑定,即可以进行一些模板的操作 vue 中常用的一些内置 v- 指令 v-t

  • SpringBoot详解如何进行整合Druid数据源

    目录 1.自定义方式 1.添加依赖 2.编写配置 3.测试 2.starter方式(推荐) 1.添加依赖 2.编写配置 3.测试 Druid是数据库连接池,它能够提供强大的监控和扩展功能.官方文档 Spring Boot整合第三方技术的两种方式: 自定义 找starter场景 1.自定义方式 使用自定义方式整合Druid 1.添加依赖 在pom.xml添加相关依赖 <!--数据库相关--> <dependency> <groupId>org.springframewor

  • springBoot详解集成Swagger流程

    目录 Swagger简介 SpringBoot集成Swagger 配置Swagger Swagger配置扫描接口 配置是否启动Swagger 配置API文档的分组 实体类配置 常用的注解 小结 目标: 了解Swagger的作用和概念 了解前后端分离 在springBoot中集成Swagger Swagger简介 前后端分离 VUE+springBoot 后端 :后端控制层.服务层.数据访问层 前端 :前端控制层.视图层 前后端通过API进行交互 前后端相对独立,松耦合 可以部署在不同的服务器上

  • SpringBoot详解整合Spring Boot Admin实现监控功能

    目录 监控 监控的意义 可视化监控平台 监控原理 自定义监控指标 监控 ​ 在说监控之前,需要回顾一下软件业的发展史.最早的软件完成一些非常简单的功能,代码不多,错误也少.随着软件功能的逐步完善,软件的功能变得越来越复杂,功能不能得到有效的保障,这个阶段出现了针对软件功能的检测,也就是软件测试.伴随着计算机操作系统的逐步升级,软件的运行状态也变得开始让人捉摸不透,出现了不稳定的状况.伴随着计算机网络的发展,程序也从单机状态切换成基于计算机网络的程序,应用于网络的程序开始出现,由于网络的不稳定性,

  • SpringBoot详解Banner的使用

    Banner的设置方式有以下几种 1.默认:SpringBoot + 版本号: 2.添加自定义资源文件:banner.txt: 3.添加自定义资源文件:banner.jpg/png/gif: 4.SpringApplication的setBanner方法,自定义资源: 下面我们进入源码,SpringBoot如何实现banner的加载: 进入SpringApplication的run方法,可以看到如下的一行内容: Banner printedBanner = printBanner(environ

随机推荐