SpringBoot学习五:全局捕获异常

本文介绍如何使用Spring框架的切面思想实现全局异常处理。通过创建一个全局异常处理类,利用@ControllerAdvice注解来捕获并处理运行时异常,将错误信息以JSON格式返回。示例代码展示了如何自定义异常处理器来拦截特定类型的异常。

若我们开发项目时,会经常返回404,500错误,这种错误在生产开发是不允许出现的,因此就需要对这类错误进行控制。

这里运用了Spring切面的思想,对异常报错进行拦截。

会用到的注解

@ExceptionHandler

表示拦截异常

@ControllerAdvice

1、作为全局异常处理的切面类

2、可以指定扫描范围

3、对于返回值有很好的处理。如果是直接返回 model 类的话,需要使用 @ResponseBody 进行 json 转换返回 String,表示跳到某个 view,返回 modelAndView,返回 model + @ResponseBody

下面为一拦截小Demo

新建拦截类GlobalExceptionHandler

package com.sm.controller;

import java.util.HashMap;
import java.util.Map;

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

@ControllerAdvice
public class GlobalExceptionHandler {

	@ExceptionHandler(RuntimeException.class)
	@ResponseBody
	public Map<String, Object> exceptionHandler() {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("errorCode", "500");
		map.put("errorMsg", "系統错误!");
		return map;
	}

}
新建异常类IndexController
package com.sm.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class IndexController {

	@RequestMapping("/indexController")
	public String index() {
		int i = 1/0;
		return "IndexController";
	}
	
	
}

启动项目:

访问http://localhost:8081/indexController


异常错误已成功拦截。



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值