springboot全局异常处理

本文详细介绍如何在SpringBoot项目中实现全局异常处理,包括配置pom依赖、创建控制器抛出异常、定义全局异常处理器及静态错误页面。通过具体代码示例,展示如何捕获并处理运行时异常,为开发者提供实用的错误处理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目目录结构:

1.创建项目,pom文件:

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-tomcat</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
	</dependency>
</dependencies>

2.controller:

package com.wyh.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("err")
public class ErrorController {

	@RequestMapping("/error")
	@ResponseBody
	public String error() {
		//设置异常
		int a = 1 / 0 ;
		return "welcome";//正常情况下在当前页面显示字符串
	}
}

3.全局异常处理器:当controller中出现了全局异常处理器中定义的异常类型时,就会跳转到异常处理器中的方法对异常进行处理。

package com.wyh.exception;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

@ControllerAdvice//定义一个全局异常处理器
public class MyExceptionHandler {
	
	@ExceptionHandler(value = Exception.class)
	//@ExceptionHandler(value = ArithmeticException.class)//此处是算数异常,也可以直接写算数异常处理器
	public ModelAndView errorHandler(HttpServletRequest request, HttpServletResponse response, Exception e) throws Exception {
		e.printStackTrace();
		ModelAndView mv = new ModelAndView();
		mv.addObject("exception", e);
		mv.addObject("url", request.getRequestURL());
		mv.setViewName("/error.html");//定义返回的视图名称,即html
		return mv;
	}

}

4.静态页面,放在resources/static下(error.html):

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>global exception</title>
</head>
<body>
<h2>sorry,出错了。。。</h2>
</body>
</html>

启动项目,访问 http://localhost:8080/err/error:

把int  i  =1  /0;注释掉,就可以访问到正常的welcome:

在整个全局异常处理中主要涉及两个注解:@ControllerAdvice和@ExceptionHandler

@ControllerAdvice是个类级别注解,作用于整个spring工程。该注解定义了一个全局异常处理器,表明该controller是个全局异常处理器。

@ExceptionHandler是个方法级别注解,作用于整个controller(可以对比上面的类注解)。其中的value表示会处理某个类型的异常及其子异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QYHuiiQ

听说打赏的人工资翻倍~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值