SpringMVC之异常处理

news2024/11/20 18:43:48

SpringMVC之异常处理

异常分为编译时异常和运行时异常,编译时异常我们trycatch捕获,捕获后自行处理,而运行时异常是不可预期的,就需要规范编码来避免,在SpringMVC中,不管是编译异常还是运行时异常,都可以最终由SpringMVC提供的异常处理器进行统一管理,这样就可以避免随时随地捕获异常的繁琐性。

 

三种处理方式

1.简单异常处理器:使用Spring MVC内置的异常处理器处理:SimpleMappingExceptionResolver

@Component
public class MysimpleMappingExceton  {
    @Bean
    public SimpleMappingExceptionResolver simpleMappingExceptionResolver(){
        SimpleMappingExceptionResolver simpleMappingExceptionResolver = new SimpleMappingExceptionResolver();
        //默认错误
        simpleMappingExceptionResolver.setDefaultErrorView("default.html");
        Properties properties = new Properties();
        properties.setProperty("java.lang.ArithmeticExceotion","erro1.html");
        properties.setProperty("java.io.FileNotFoundException","erro2.html");
        simpleMappingExceptionResolver.setExceptionMappings(properties);
        return simpleMappingExceptionResolver;
    }
}

2.自定义异常处理器:实现HandlerExceptionResolver接口,自定义异常进行处理

@Component
public class MyHandlerExceptionResolver implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("/default.html");
        return modelAndView;
    }
}

3.使用@ControllerAdvice@ExceptionHandler实现全局异常

@ControllerAdvice
public class GloExceotion {
    @ExceptionHandler(RuntimeException.class)
    @ResponseBody
    public Result runtimeException(){
        Result result = new Result(200,"错误",new Object());
        return result;
    }
    @ExceptionHandler(FileNotFoundException.class)
    public ModelAndView fileNotException(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("/erro2.html");
        return modelAndView;
    }
    @ExceptionHandler(Exception.class)
    public ModelAndView Exception(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("/default.html");
        return modelAndView;
    }
}

例子

@RestController
public class ExceptionController {
    @RequestMapping("/e1")
    public String e1 (){
        int a=10/0;
        return "ruuning exception";
    }
    @RequestMapping("/e2")
    public String e2() throws FileNotFoundException {
        FileInputStream fileInputStream = new FileInputStream("file:/barch:/");
        return "ruuning exception";
    }
    @RequestMapping("/e3")
    public String e3()  {
        int [] array ={1,2};
        System.out.println(array[5]);
        return "ruuning exception";
    }
}

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

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

相关文章

jenkins 连接服务器,提示Can‘t connect to server

在Jenkins 添加服务器时,提示 Cant connect to server,如图 搞了好久,不知道为什么不行~原来是行的,现在删了 新建一个也不行。

浅谈KNX总线技术在图书馆智能照明系统的应用

安科瑞 华楠 摘要:系统引入KNX总线实现的照明分布式智能控制,在提高馆所照明系统的节能效果、视觉效果和稳定性的基础上,展现了KNX总线部署便捷、扩充性强、可靠性高等自身要求,通过提升照明管理效率,营造了信息时代背…

蒙特卡洛树搜索(MCTS)在AlphaGo Zero中

蒙特卡洛树搜索(MCTS)在AlphaGo Zero中 一、说明 蒙特卡洛树(Monte Carlo Tree)是一种搜索算法,主要用于解决决策问题。它的核心思想是通过模拟游戏过程,评估各个节点的胜率,从而选择最优策略。…

dom靶场

靶场下载地址: https://www.vulnhub.com/entry/domdom-1,328/ 一、信息收集 获取主机ip nmap -sP 192.168.16.0/24netdiscover -r 192.168.16.0/24端口版本获取 nmap -sV -sC -A -p 1-65535 192.168.16.209开放端口只有80 目录扫描 这里扫描php后缀的文件 g…

cadence virtuoso GBW PM公式仿真

在virtuoso中用公式calculate的方法仿真单位增益带宽GBW和相位裕度 首先进行stb仿真 将增益曲线send to calculate,调用cross函数,threshold value设置为0,求0dB时的横坐标 GBW: 将相位曲线send to calculate,调用va…

TuyaOS 3.8.0操作系统新鲜出炉!IoT开发门槛再次被降低

作为降低物联网开发门槛的 TuyaOS 操作系统,此次迎来了重大更新!TuyaOS 3.8.0 新版本不仅更新了物联网各个板块的开发框架,还能实现与其他开发平台的无缝接入,致力于让开发者更轻松便捷地接入涂鸦 IoT PaaS。 TuyaOS 3.8.0 优化和…

等保案例 6

用户简介 江苏省监狱管理局是江苏省司法厅管理下的副厅级部门管理机构,是主管全省监狱工作的机关。随着信息化的发展,江苏省监狱管理局的监狱业务对网络和信息系统的依赖不断增加,网络流转的信息量不断增大,信息化建设的需求也日…

docker 第一章

目录 1.安装 docker 2.镜像、容器 3.总结 1.安装 docker 2.镜像、容器 3.总结 容器在 linux 上的本机运行,与其他容器共享主机的内核。它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量级。

Python基础教程:私有变量的访问和赋值教程

嗨喽~大家好呀,这里是魔王呐 ❤ ~! 首先我们这里先描述下: Python中,变量名类似__x__的,以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的(比如 doc, __i…

File Upload

File Upload 文件上传功能是大部分WEB应用的常用功能,网站允许用户自行上传头像、照片、一些服务类网站需要用户上传证明材料的电子档、电商类网站允许用户上传图片展示商品情况等。然而,看似不起眼的文件上传功能如果没有做好安全防护措施,…

Camunda 7.x 系列【17】BusinessKey

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 需求场景2. 案例演示2.1 创建请假申请2.2 启动流程2.3 流程关联业务查询2.4 业务关联流程…

❤ 好玩有趣的Windows本地域名预设映射

❤ Win10 如何把本地ip映射成域名 1、 配置: Windows本地域名预设映射 打开相关的地址: C:\Windows\System32\drivers\etc配置方式: 打开hosts 文件 域名如:127.0.0.1 www.baidu.com 127.0.0.1 www.sellercentral.amazon.com2…

计算机视觉五大核心研究任务全解:分类识别、检测分割、人体分析、三维视觉、视频分析

目录 一、引言1.1 计算机视觉的定义1.1.1 核心技术1.1.2 应用场景 1.2 历史背景及发展1.2.1 1960s-1980s: 初期阶段1.2.2 1990s-2000s: 机器学习时代1.2.3 2010s-现在: 深度学习的革命 1.3 应用领域概览1.3.1 工业自动化1.3.2 医疗图像分析1.3.3 自动驾驶1.3.4 虚拟现实与增强现…

日历应用行业研究:2022年全球市场规模大约为15.8亿元

日历应用程序可以通过提醒、安排会议和规划用户的日期、星期和月份来创建基本的时间块条目,以确保用户随时随地、尽可能高效地利用他们的时间。日历应用作为一个高效的时间管理工具,需要与项目管理工具,google邮箱,Outlook邮箱&am…

Go 安装配置

介绍Ubuntu20.04 安装和配置Go 1.安装Go 去这个地方下载Go https://go.dev/doc/install 如果之前安装过,可以参考这个(没有可以忽略) 下载完成后执行 sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz 然后修改环境变量 sudo ge…

SpringBoot的配置文件以及日志设置

在使用SpringBoot开发的过程中我们通常会用到配置文件来设置配置信息 以及使用日志来进行记录我们的操作,方便我们对错误的定位 配置文件的作用在于:设置端口,设置数据库连接信息,设置日志等等 在SpringBoot中,配置…

vue基础知识五:请描述下你对vue生命周期的理解?在created和mounted这两个生命周期中请求数据有什么区别呢?

一、生命周期是什么 生命周期(Life Cycle)的概念应用很广泛,特别是在政治、经济、环境、技术、社会等诸多领域经常出现,其基本涵义可以通俗地理解为“从摇篮到坟墓”(Cradle-to-Grave)的整个过程在Vue中实…

前端性能优化——包体积压缩插件,打包速度提升插件,提升浏览器响应的速率模式

前端代码优化 –其他的优化可以具体在网上搜索 压缩项目打包后的体积大小、提升打包速度,是前端性能优化中非常重要的环节,结合工作中的实践总结,梳理出一些 常规且有效 的性能优化建议 ue 项目可以通过添加–report命令: "…

常见架构类型

目录 1.单机架构 2.应用数据分离架构 3.读写分离架构 4.冷热分离架构 5.垂直分库架构 6.微服务架构 7.容器编排架构 1.单机架构 单机架构是简单的将应用服务和数据库服务部署到同一台机器上。 缺点:存在很大的性能限制。 2.应用数据分离架构 引入负载均衡&a…

【Python】Web学习笔记_flask(6)——会话session对象

处理利用cookie来判断用户登录外,也可以使用session来判断用户是否登录 html代码和cookie对象的设置相同 from flask import Flask,request,render_template,make_response,session,url_for,redirectappFlask(__name__) app.secret_keyps1234567890 app.route(/) …