springboot 全局异常处理

springboot 全局异常处理

研究了半天springboot的全局异常处理,虽然还是需要再多整理一下,但是对于常见的404和500足以可以区分开,能够根据这两个异常分别处理

首先配置视图解析路径

spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp

针对500错误

创建单独的配置类,放在启动类同包或子包下

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

@ControllerAdvice
public class GlobalDefaultExceptionHandler {

    //可以返回自定义的错误页面
    @ExceptionHandler(Exception.class)  //这里根据报的异常可以写不同的方法,反别捕捉
    private ModelAndView returnErrorPage(Exception e) {
        ModelAndView mv = new ModelAndView();
        mv.addObject("exception",e.getClass().getName());
        mv.setViewName("/error");
        return mv;
    }
}

针对404错误

同样创建单独的配置类,放在启动类同包或子包下

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.web.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("error")
public class MyErrorController implements ErrorController {

    Logger logger = LoggerFactory.getLogger(MyErrorController.class);

    @Override
    public String getErrorPath() {
        logger.info("********************进入自定义异常********************");
        return "err";   //这个返回的视图名称不要用error,springboot默认的视图名是error,如果一定要用error,需要将error放在指定的路径下,这个日后再整理。
    }

    @RequestMapping
    public String error() {
        return getErrorPath();
    }

}

原文地址:https://www.cnblogs.com/xujie09/p/8464279.html

时间: 2024-07-31 06:54:11

springboot 全局异常处理的相关文章

zbb20180921 springboot 全局异常处理 404 500

研究了半天springboot的全局异常处理,虽然还是需要再多整理一下,但是对于常见的404和500足以可以区分开,能够根据这两个异常分别处理 首先配置视图解析路径 spring.mvc.view.prefix=/WEB-INF/ spring.mvc.view.suffix=.jsp 针对500错误 创建单独的配置类,放在启动类同包或子包下 import org.springframework.web.bind.annotation.ControllerAdvice; import org.s

第二十三章 springboot + 全局异常处理

一.单个controller范围的异常处理 1 package com.xxx.secondboot.web; 2 3 import org.springframework.web.bind.annotation.ExceptionHandler; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 import org.springframework.web.bind.annotation.RequestMeth

springboot全局异常处理

项目中遇到运行时异常,总不能每个异常处理都去添加try catch逻辑,甚至有的时候一个偶然条件发生而导致异常,而我们没有进行对应的处理则会直接给请求者返回未知的错误,这在正式的上线的项目中是不允许,所以我们来配置全局异常处理. 1.使用到的注解:@ControllerAdvice注解是用来配置控制器通知的,我们可以配置过滤拦截具体一种或者多种类型的注解,添加annotations属性即可,在类的上方我们配置了@ControllerAdvice的annotations属性值为RestContro

SpringBoot2.0系列教程(五)Springboot框架添加全局异常处理

Hello大家好,本章我们添加全局异常处理.另求各路大神指点,感谢 一:为什么需要定义全局异常 在互联网时代,我们所开发的应用大多是直面用户的,程序中的任何一点小疏忽都可能导致用户的流失,而程序出现异常往往又是不可避免的,所以我们需要对异常进行捕获,然后给予相应的处理,来减少程序异常对用户体验的影响 二:添加业务类异常 在前面说过的ret文件夹下创建ServiceException package com.example.demo.core.ret; import java.io.Seriali

springboot结合全局异常处理之登录注册验证

在学校做一个校企合作项目,注册登录这一块需要对注册登录进行输入合法的服务器端验证,因为是前后端分离开发,所以要求返回JSON数据. 方法有很多,这觉得用全局异常处理比较容易上手 全局异常处理 首先来创建一个sprIngboot的web项目或模块,目录结构如下 实体类User.java @Data public class User { private String userName; private String passwold; } 实体类UserResult.java 把数据封装到这里返回

SpringBoot入门二十一,全局异常处理

一共两个文件,一个处理全局异常,保存信息到日志,另外一个负责返回异常信息给接口,只要将其文件添加到项目中,无需再做其他配置即可 1. MyExceptionHandler.java 全局异常处理类 优先执行此类,这里不好抓取404.403等错误信息getMaps()请参考获取request中传递过来的参数信息getHeaders()请参考获取request中传递过来的header信息代码如下: import java.util.Enumeration; import java.util.Hash

Springboot的异常处理与自定义异常

园友们好,元旦很快就到来了,提前祝各位园友们元旦快乐,今天给大家分享一个工作中必用一个知识点,就是使用枚举构建自定义异常并应用于springboot的异常处理器.开始之前我先把这个案例的结构大致说明一下: 1.使用idea创建一个springboot的Gradle/Maven项目,引入web模块即可(由于案例的重点是异常处理,所以跳过其他操作). 2.创建一个javabean,用来接收前台的参数. 3.创建一个枚举.封装异常的错误码等信息. 4.创建一个自定义异常类继承RuntimeExcept

Struts2全局异常处理

1.在struts.xml中配置全局异常处理 在Action中抛出异常,此异常可以是action自己抛的,也可以是Service抛出来的,都会跳转到全局异常中,只有在当前Action中配置域全局异常返回的result中name相同的result,就能跳转到指定错误视图 并在struts.xml中对应Action中配置跳转的error视图: JSP中通过Struts标签并结合OGNL表达式从值栈中获取懂啊异常信息显示出来,如果不知道值栈中异常对象的名称可以先<s:debugger>看一下,如:

服务端增加WCF服务全局异常处理机制

转自:http://www.csframework.com/archive/1/arc-1-20150109-2193.htm 服务端增加WCF服务全局异常处理机制,任一WCF服务或接口方式出现异常,将统一调用WCF_ExceptionHandler.ProvideFault方法,因此不需要每个方法使用try catch写法. 1 /// <summary> 2 /// WCF服务端异常处理器 3 /// </summary> 4 public class WCF_Exceptio