前言
当系统发生时, spring boot会自动处理异常, 这里通过自定义统一处理异常进行处理。
pom.xml文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath/> </parent> <groupId>com.huzh</groupId> <artifactId>springboot-error</artifactId> <version>1.0-SNAPSHOT</version> <name>springboot-error</name> <description>springboot-error</description>
<properties> <java.version>1.8</java.version> </properties>
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
|
创建一个IndexController类,定义一个正常方法和一个错误方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| @RestController public class IndexController {
@RequestMapping("/") public String indesx() { return "index"; }
@RequestMapping("/test") public String test() { Map map = null; return map.toString(); } }
|
访问项目,分析结果
访问http://localhost:8080/aa, 如下

访问http://localhost:8080/test, 如下

创建异常处理类CommonErrorController
从上图可以看到,springboot报错的时候都在找/error这个地址,这时我们新建一个CommonErrorController来统一处理异常,这个类实现了ErrorController。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| @RestController public class CommonErrorController implements ErrorController {
private final String ERROR_PATH = "/error";
@Override public String getErrorPath() { return ERROR_PATH; }
@RequestMapping(value = ERROR_PATH) public String handleError() { System.out.println(getErrorPath()); return "error"; } }
|
