SpringBoot 统一异常处理详解

网友投稿 268 2023-01-07


SpringBoot 统一异常处理详解

代码结构

配置pom文件

xmlns:xsi="http://w3.org/2001/Xhttp://MLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

bsea

SpringBootException

1.0-SNAPSHOT

jar

org.springframework.boot

spring-boot-starter-parent

1.5.14.RELEASE

UTF-8

UTF-8

1.8

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

xmlns:xsi="http://w3.org/2001/Xhttp://MLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

bsea

SpringBootException

1.0-SNAPSHOT

jar

org.springframework.boot

spring-boot-starter-parent

1.5.14.RELEASE

UTF-8

UTF-8

1.8

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

启动类

package com.zz;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class App {

public static void main(String[] args) {

SpringApplication.run(App.class,args);

}

}

自定义异常类

package com.zz.exception;

public class UserNotExistException extends RuntimeException{

private static final long serialVersionUID = -1574716826948451793L;

private String id;

public UserNotExistException(String id){

super("user not exist");

this.id = id;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

}

统一处理类

1. 在class上面加 @ControllerAdvice 表示全局异常处理类

2. 在方法的上面加@ExceptionHandler(UserNotExistException.class), 表示catch 到这个异常类型,并且在方法中处理, 不同的异常,可以通过不同的方法处理,每个方法上面都是通过这个注解括号里面的异常类来设置需要处理的异常类型。

package com.zz.handler;

import com.zz.exception.UserNotExistException;

import org.springframework.http.HttpStatus;

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

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

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

import org.springframework.web.bind.annotation.ResponseStatus;

import java.util.HashMap;

import java.util.Map;

@ControllerAdvice

public class ControllerExceptionHandler {

//返回json的错误信息

@ExceptionHandler(UserNotExistException.class)

@ResponseBody

@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)

public Map handleUserNotExistsException(UserNotExistException e) {

Map map = new HashMap<>();

map.put("id", e.getId());

map.put("message", e.getMessage());

return map;

}

//错误以后,跳转到自己定义的错误页面

@ExceptionHandler(ArithmeticException.class)

public String handle1(ArithmeticException e) {

System.out.println("handle1 500*到了**************");

return "/500.html";

}

}

controller类

package com.zz.controller;

import com.zz.exception.UserNotExistException;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PathVariable;

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

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

@RestController

@RequestMapping("user")

public class UserController {

@GetMapping("/{id:\\d+}")

public void get(@PathVariable StringpjwqIM id) {

throw new UserNotExistException(id);

}

@GetMapping("error2")

public void get2() {

int a=1/0;

}

}

#运行结果

代码地址 github: 添加链接描述

以上所述是给大家介绍的SpringBoot统一异常处理详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口自动化框架图片高清(自动生成api接口文档的框架)
下一篇:总结接口测试怎么做的(接口测试实操)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~