前言:
spring boot学习以及使用也有一段时间了,平时疏于整理资料,故今日写一篇关于全局异常的资料
背景:
异常处理是为了给用户带来良好的交互体验
异常:
- 访问了错误的页面,或者是非法的访问导致服务器不能返回正常的数据,例如访问了不存在的页面导致404
- 程序代码内部的错误,在开发时期由于没有考虑周全导致的程序异常,列如常见的空指针异常(NullPointException
操作:
关于第一种处理:
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
@Controller
class MainsiteErrorController implements ErrorController {
@RequestMapping("/error")
public String handleError(HttpServletRequest request) {
System.out.println("成功拦截异常信息");
//获取statusCode:401,404,500
Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
if (statusCode == 401) {
return "/error.html";
} else if (statusCode == 404) {
return "/404.html";
} else if (statusCode == 403) {
return "/error.html";
} else if (statusCode == 500) {
return "/error.html";
} else {
return "/error.html";
}
}
@Override
public String getErrorPath() {
return "/error";
}
}
关于第二种处理:
SpringBoot中自带的异常捕获机制返回的默认页面比较丑,对用户来说不够人性化。所以这篇文章来讲解SpringBoot钟自定义全局异常捕获。
主要讲解三种异常捕获形式:
页面跳转异常
ajax异常
统一返回异常的形式
分别来看三种形式的全局异常捕获:
1.页面跳转异常
首先新建一个异常:
package com.haozz.exceptiondemo.controller;
import org.springframework.stereotype.Controller;