SpringBoot——全局捕获异常

@ExceptionHandler 表示拦截异常

@ControllerAdvice   controller 的一个辅助类,最常用的就是作为全局异常处理的切面类

1. 定义全局异常类

@ControllerAdvice   // 切面
public class GlobalExceptionHandler {
    // 捕获运行时异常
    @ExceptionHandler(RuntimeException.class)
    @ResponseBody
    public Map<String,Object> exceptionHander(){
        Map<String,Object> map = new HashMap<>();
        map.put("errorCode","101");
        map.put("errorMsg","系统错误");
        return map;
    }
}

2. 抛出异常的映射类

@RestController // 声明 Rest 风格控制器
@RequestMapping("user")
public class UserController {
    @RequestMapping("{age}")
    @ResponseBody
    public User getUser(@PathVariable("age")int age ){
        User user = new User("张三",age);
        int i =  12/0;
        return user;
    }

    @RequestMapping("{name}/{age}")
    @ResponseBody
    public User getUser1(@PathVariable("name") String name,@PathVariable("age") int age){
        User user = new User(name,age);
        return user;
    }
}

3. 启动类

@EnableAutoConfiguration
@ComponentScan(basePackages = {"com.zth.controller", "com.zth.exception"})
public class App {
    public static void main(String[] args){
        // 启动 SpirngBoot 项目
        SpringApplication.run(App.class,args);
    }
}

@ComponentScan(basePackages = {"com.zth.controller", "com.zth.exception"})  扫描异常类

4. 执行结果:

 

Spring Boot 中,可以通过实现一个全局异常处理器来捕获应用程序中的异常,并对异常进行统一处理。 实现一个全局异常处理器的步骤如下: 1. 创建一个异常处理器类,用于处理应用程序中的异常。 ```java @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity<ErrorResponse> handleException(Exception ex) { ErrorResponse errorResponse = new ErrorResponse("500", ex.getMessage()); return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR); } } ``` 2. 在异常处理器类上加上 @ControllerAdvice 注解,表示这是一个全局异常处理器。 3. 在异常处理器类中定义异常处理方法,使用 @ExceptionHandler 注解指定要处理的异常类型。在异常处理方法中,可以处理异常并返回一个自定义的错误响应实体。 4. 在异常处理方法中使用 ResponseEntity 类来封装错误响应实体,并指定 HTTP 状态码。这里示例使用了 500 状态码。 5. 配置 Spring Boot 应用,使其能够扫描到异常处理器类。可以在启动类上加上 @ComponentScan 注解来指定扫描路径。 ```java @SpringBootApplication @ComponentScan(basePackages = "com.example.demo") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 以上就是在 Spring Boot 中实现全局异常处理的步骤。通过实现全局异常处理器,可以有效地统一处理应用程序中的异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值