springboot全局异常统一拦截

本文介绍了SpringBoot中如何实现全局异常统一拦截,包括页面跳转异常、Ajax异常和统一异常处理。通过创建异常处理工具类,利用@ControllerAdvice和@RestControllerAdvice注解捕获不同类型的异常,并给出具体的代码示例和异常处理流程。
摘要由CSDN通过智能技术生成

前言:

  spring boot学习以及使用也有一段时间了,平时疏于整理资料,故今日写一篇关于全局异常的资料

背景:

  异常处理是为了给用户带来良好的交互体验

异常:

  1. 访问了错误的页面,或者是非法的访问导致服务器不能返回正常的数据,例如访问了不存在的页面导致404
  2. 程序代码内部的错误,在开发时期由于没有考虑周全导致的程序异常,列如常见的空指针异常(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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值