Spring Boot异常处理!!!

SpringBoot默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicErrorController 来处理/error 请求,然后跳转到默认显示异常的页面来展示异常信息

如 果我 们 需 要 将 所 有 的 异 常 同 一 跳 转 到 自 定 义 的 错 误 页 面 , 需 要 再src/main/resources/

templates 目录下创建 error.html 页面。注意:名称必须叫 error

  1.controller:

/** Copyright (c) 2020, 2024,  All rights reserved.**/
package com.by.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** <p>Project: springboot - DomeContorller</p>* <p>Powered by scl On 2024-01-15 10:02:34</p>* <p>描述:<p>** @author 孙臣龙 [1846080280@qq.com]* @version 1.0* @since 17*/
@Controller
public class DomeController {@RequestMapping("show1")public String show1() {System.out.println(6 / 0);return "error";}@RequestMapping("show2")public String show2() {String str=null;str.length();return "error";}
}

2.定义错误页面

error.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>error1</h1>
出错啦!!!!汗流浃背了!!!
<span th:text="${msg}"></span>
</body>
</html>

error.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>error2</h1>
出错啦!!!!汗流浃背了!!!
<span th:text="${msg}"></span>
</body>
</html>

3.定义全局异常处理类:

GlobalException:(普通的处理请求)

/** Copyright (c) 2020, 2024,  All rights reserved.**/
package com.by.exception;import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** <p>Project: springboot - GlobalException</p>* <p>Powered by scl On 2024-01-15 10:11:29</p>* <p>描述:<p>** @author 孙臣龙 [1846080280@qq.com]* @version 1.0* @since 17*/
@Component
public class GlobalException implements HandlerExceptionResolver {@Overridepublic ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {ModelAndView modelAndView = new ModelAndView();if (e instanceof NullPointerException){modelAndView.setViewName("error1");} else if (e instanceof ArithmeticException) {modelAndView.setViewName("error2");}modelAndView.addObject("msg",e.toString());return modelAndView;}
}

AjaxGlobalException:(ajax的请求方式,返回的使json数据)

/** Copyright (c) 2020, 2024,  All rights reserved.**/
package com.by.exception;import javafx.beans.property.adapter.ReadOnlyJavaBeanBooleanProperty;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.HashMap;
import java.util.Map;/*** <p>Project: springboot - AjaxGlobalException</p>* <p>Powered by scl On 2024-01-15 10:48:17</p>* <p>描述:<p>** @author 孙臣龙 [1846080280@qq.com]* @version 1.0* @since 17*/
//@ControllerAdvice
public class AjaxGlobalException {@ResponseBody@ExceptionHandlerpublic Map errorHandler(Exception e){Map<String , Object> m = new HashMap<>();m.put("status",500);m.put("msg",e.toString());return m;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/625086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【mysql 插入数据问题】MySQL插入数据阻塞问题及优化方案

摘要&#xff1a;本文主要介绍了MySQL数据库在插入数据时出现阻塞的常见原因&#xff0c;以及如何查看和优化这些问题。通过分析慢查询日志、优化索引、优化数据类型、批量插入等手段&#xff0c;可以有效地提高MySQL数据库的插入性能。 一、引言 MySQL作为一款广泛应用于各类项…

用Pytorch实现线性回归模型

目录 回顾Pytorch实现步骤1. 准备数据2. 设计模型class LinearModel代码 3. 构造损失函数和优化器4. 训练过程5. 输出和测试完整代码 练习 回顾 前面已经学习过线性模型相关的内容&#xff0c;实现线性模型的过程并没有使用到Pytorch。 这节课主要是利用Pytorch实现线性模型。…

Pandas实战100例 | 案例 51: 日期时间过滤

案例 51: 日期时间过滤 知识点讲解 当你的 DataFrame 包含 datetime 类型的列时&#xff0c;你可以基于日期时间条件过滤数据。这在处理时间序列数据时特别有用。 日期时间过滤: 使用布尔索引&#xff0c;可以根据日期时间条件过滤数据。 示例代码 # 准备数据和示例代码的…

SVD和EVD的关系

文章目录 SVD和EVD基本概念具体计算中的关系 SVD和EVD基本概念 奇异值分解&#xff08;Singular Value Decomposition&#xff0c;SVD&#xff09;和特征值分解&#xff08;Eigenvalue Decomposition&#xff0c;EVD&#xff09;是矩阵分解的两种常见方法&#xff0c;它们在线…

(1)(1.13) SiK无线电高级配置(六)

文章目录 前言 15 使用FTDI转USB调试线配置SiK无线电设备 16 强制启动加载程序模式 17 名词解释 前言 本文提供 SiK 遥测无线电(SiK Telemetry Radio)的高级配置信息。它面向"高级用户"和希望更好地了解无线电如何运行的用户。 15 使用FTDI转USB调试线配置SiK无线…

Oracle12c创建表空间及用户

Oracle12c创建表空间及用户 1. 表空间相关内容 表空间数据文件容量与DB_BLOCK_SIZE有关&#xff0c;在初始建库时&#xff0c;DB_BLOCK_SIZE要根据实际需要&#xff0c;设置为 4K、8K、16K、32K、64K等几种大小&#xff0c;ORACLE的物理文件最大只允许4194304个数据块&#xf…

Go 语言运算符详解:加法、算术、赋值、比较、逻辑和位运算符全面解析

运算符用于对变量和值执行操作。 加号运算符&#xff08;&#xff09;将两个值相加&#xff0c;如下面的示例所示&#xff1a; 示例代码&#xff1a; package mainimport ("fmt" )func main() {var a 15 25fmt.Println(a) }尽管加号运算符通常用于将两个值相加&a…

vue3 锚点定位 点击滚动高亮

功能描述 点击导航跳到对应模块的起始位置&#xff0c;并且高亮点击的导航&#xff1b; 滚动到相应的模块时&#xff0c;对应的导航也自动高亮&#xff1b; 效果展示 注意事项 一定要明确哪个是要滚动的盒子&#xff1b;滚动的高度要减去导航栏的高度&#xff1b;当前在导航1…

C++ 树与图的深度优先遍历 || 模版题:树的重心

树和无向图都可以看成有向图&#xff08;无向图在添加边的时候添加双向的&#xff09; 下面是模版&#xff0c;实际使用要根据情况改&#xff1a; #include <iostream> #include <cstring> using namespace std;const int N 10010, M N * 2;int n; int h[N], e[…

【VTKExamples::PolyData】第二期 曲率

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK中的曲率计算及显示,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 目录 前言 1. Curvatures样例 2. vtkCurv…

【发票识别】支持pdf、ofd、图片格式(orc、信息提取)的发票

背景 为了能够满足识别各种发票的功能&#xff0c;特地开发了当前发票识别的功能&#xff0c;当前的功能支持pdf、ofd、图片格式的发票识别&#xff0c;使用到的技术包括文本提取匹配、ocr识别和信息提取等相关的技术&#xff0c;用到机器学习和深度学习的相关技术。 体验 体…

vue知识-06

es6导入导出语法 # 做项目&#xff1a;肯定要写模块--导入使用 # 如果包下有个 index.js 直接导到index.js上一次即可 默认导出和导入 : export default name // 只导出变量 export default add // 只导出函数 export default {name,add} // 导出对象 export defau…

Cesium中设置弹窗随轨迹动画对象移动

1.这是要移动的弹窗&#xff0c;隐藏显示逻辑、样式、展示内容自己写&#xff0c;主要就是动态设置弹窗的style&#xff0c;floatLeft和floatTop都是Vue中的data双向绑定数据&#xff1b; <div id"box" v-show"hasMove" :style"{ left: floatLeft…

【软件测试学习笔记2】用例设计方法

1.能对穷举场景设计测试点&#xff08;等价法&#xff09; 等价类&#xff1a; 说明&#xff1a;在所有测试数据中&#xff0c;具有某种共同特征的数据集合进行划分 分类&#xff1a;有效等价类&#xff1a;满足需求的数据集合 无效等价类&#xff1a;不满足需求的数据集合 步…

【Linux】Git - 新手入门

文章目录 1. git 版本控制器 - 该如何理解&#xff1f;2. git / gitee / github 区别&#xff1f;3. Linux 中 git 的使用3.1 安装 git3.2 使用 github 新建远端仓库3.2.1 账号注册3.2.2 创建代码仓库3.2.3 克隆仓库到本地3.2.4 .gitignore 文件 3.3 使用 git 提交代码到 githu…

刷题02 数组easy

1752.数组是否能经排序和轮转得到 如果整个数组非递减&#xff0c;返回true&#xff0c;如果只有两个子数列非递减&#xff0c;并且两个子序列之间是有序的&#xff0c;返回true。 先找到第一个不满足非递减的位置i&#xff0c;如果inumsize&#xff0c;说明整个数组非递减。否…

LeetCode 0082.删除排序链表中的重复元素 II:模拟

【LetMeFly】82.删除排序链表中的重复元素 II&#xff1a;模拟 力扣题目链接&#xff1a;https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/ 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字…

1【Linux】入门 (权限的理解||umask||粘滞位||cc++程序的翻译过程||解释性语言和编译性语言的区别)

无废话&#xff0c;全干货 一.权限 1.基本权限 读&#xff08;r&#xff09;&#xff1a; Read 对文件而言&#xff0c;具有读取文件内容的权限&#xff1b;对目录来说&#xff0c;具有浏览该目录信息的权限。 写&#xff08;w&#xff09;&#xff1a; Write 对文件而言&…

线程池执行流程详解,主要介绍其参数,以及执行过程中核心线程,队列,最大线程等的执行添加顺序,以及为什么这么做

线程池执行流程主要涉及到以下几个关键组件&#xff1a;核心线程数、任务队列、最大线程数以及拒绝策略等。以下是线程池的工作流程详解&#xff1a; 创建线程池&#xff1a; 当我们创建一个线程池时&#xff0c;需要指定几个核心参数&#xff0c;如corePoolSize(核心线程数)、…

数据结构学习 jz30 包含 min 函数的栈

关键词&#xff1a;排序 题目&#xff1a;最小栈 方法一&#xff1a;在记录这个数的同时&#xff0c;记录目前的最小值。看了提示才写出来的。 方法二&#xff1a;辅助栈。辅助栈保持非严格递减。看了k神的答案。 方法一&#xff1a; 一开始没想到怎么存最小&#xff0c;看…