`
wx1569488408
  • 浏览: 79245 次
文章分类
社区版块
存档分类
最新评论

springboot 全局异常处理

 
阅读更多

ajax返回

package com.dl.ExceptionTest;

import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import javax.servlet.http.HttpServletRequest;

/**
 * @author xingguanghui
 * @create 2018-04-03 10:51
 **/
@RestControllerAdvice
public class ExceptionHandler {
    @org.springframework.web.bind.annotation.ExceptionHandler(value = Exception.class)
    public Object defaultHandler(HttpServletRequest req,Exception e){
        JSONObject object = new JSONObject();
        object.put("code","500");
        object.put("msg",e.getMessage());
        return object;
    }
}

返回页面

package com.dl.ExceptionTest;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author xingguanghui
 * @create 2018-04-03 11:05
 **/
@ControllerAdvice
public class ExceptionHandler1 {

    @ExceptionHandler(value = Exception.class)
    public Object errHandler(HttpServletRequest req, HttpServletResponse rsp,Exception e) throws Exception{
        e.printStackTrace();
        ModelAndView model = new ModelAndView();
        model.addObject("exception",e);
        model.addObject("url",req.getRequestURL());
        model.setViewName("error");
        return model;
    }
}

判断请求是不是ajax请求

/**
 * 判断请求是否是ajax请求
 * @param req
 * @return
 */
public static boolean isAjax(HttpServletRequest req){
    String header = req.getHeader("X-Requested-With");
    return (header != null && "XMLHttpRequest".equals(header));
}

集成两种返回

package com.dl.ExceptionTest;

import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;

/**
 * @author xingguanghui
 * @create 2018-04-03 10:51
 **/
@RestControllerAdvice
public class ExceptionHandler {
    @org.springframework.web.bind.annotation.ExceptionHandler(value = Exception.class)
    public Object defaultHandler(HttpServletRequest req,Exception e){
        e.printStackTrace();
        if(isAjax(req)){
            JSONObject object = new JSONObject();
            object.put("code","500");
            object.put("msg",e.getMessage());
            return object;
        }else{
            ModelAndView model = new ModelAndView();
            model.addObject("exception",e);
            model.addObject("url",req.getRequestURL());
            model.setViewName("error");
            return model;
        }
    }

    /**
     * 判断请求是否是ajax请求
     * @param req
     * @return
     */
    public static boolean isAjax(HttpServletRequest req){
        String header = req.getHeader("X-Requested-With");
        return (header != null && "XMLHttpRequest".equals(header));
    }

}

转载于:https://my.oschina.net/u/3560494/blog/1789111

分享到:
评论

相关推荐

    Springboot全局异常处理demo.zip

    Springboot全局异常处理demo 项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的...

    springboot全局异常处理

    在Spring Boot应用中,全局异常处理是至关重要的一个部分,它能确保系统在遇到错误时,仍然能够优雅地响应客户端,提供友好的错误信息,而不是返回默认的、未经处理的堆栈跟踪。本教程将详细介绍如何在Spring Boot中...

    Springboot全局异常捕获及try catch区别解析

    try catch语句和Springboot全局异常捕获机制都是异常处理机制,但它们的使用场景和目的不同。try catch语句通常用于捕获和处理特定的业务逻辑异常,而Springboot全局异常捕获机制则用于捕获和处理应用程序中的所有未...

    springboot全局异常处理代码实例

    Spring Boot 全局异常处理代码实例 Spring Boot 全局异常处理代码实例是指在 Spring Boot 项目中,如何使用全局异常处理机制来捕捉和处理异常。全局异常处理机制可以避免项目中出现大量冗余的代码,提高代码的...

    springboot全局异常处理Java 异常拦截类,复制粘贴即用,返回对应的HTTP状态码

    1.复制粘贴即用,返回对应的HTTP状态码。 2.可自行扩展拦截其他异常。 3.日志打印用的是lombok。 4.R类为返回类。 5.获取异常文件名,获取异常行数

    springboot-global-exception:springboot全局异常处理

    springboot-global-exception springboot全局异常处理

    springboot全局异常处理详解

    本篇文章主要介绍了springboot全局异常处理详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    springboot JSR303参数校验 全局异常处理

    Springboot全局异常处理、JSR303参数校验,具体详见: https://blog.csdn.net/herojuice/article/details/85788681

    springboot后端全局异常处理及quartz整合源码

    springboot后端全局异常处理及quartz整合源码,适合springboot初学者学习参考,希望可以帮到你!

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

    * SpringBoot全局异常处理机制 * 使用@ControllerAdvice或@RestControllerAdvice来实现全局异常处理 * 自定义异常类继承自Exception类 * 使用@ExceptionHandler注解来指定要捕获的异常类型 * 使用@ReponseBody注解来...

    springboot入门(全局 异常拦截)

    在Spring Boot框架中,全局异常处理是不可或缺的一部分,它使得我们的应用更加健壮,能够优雅地处理各种可能出现的错误情况。下面将详细讲解Spring Boot如何实现全局异常拦截,并结合给出的"spring-boot-01"文件,...

    springboot定义统一返回格式及全局异常处理

    springboot定义统一返回格式及全局异常处理。springboot定义统一返回格式及全局异常处理。

    SpringBoot中异常处理.doc

    1. **全局异常处理**: SpringBoot允许我们定义全局的异常处理器,通常通过使用`@RestControllerAdvice`注解的类来实现。这样可以捕获并处理所有控制器方法抛出的异常,包括自定义异常和系统内置异常。例如,我们可以...

    SpringBoot如何优雅地处理全局异常详解

    使用SpringBoot的全局异常处理机制,我们可以优雅地处理异常,使代码更加简洁、可读性更好。同时,这种方式也可以减少代码重复,提高开发效率。 结论 本文详细介绍了如何在SpringBoot中优雅地处理全局异常。通过...

    spingmvc+mybatis+统一异常处理机制

    统一异常处理会区分前端是否ajax请求,自动返回json数据格式,要求开发人员在处理ajax请求时统一封装成一个对象返回,以符合代码统一规范。 此工程在idea环境编写,导入请自己新建工程手工复制代码导入。

    Springboot之自定义全局异常处理的实现

    Springboot之自定义全局异常处理的实现 Springboot之自定义全局异常处理的实现是指在Springboot框架中,通过自定义异常处理器来捕获和处理全局异常的方法。这种方法可以帮助开发者更好地处理程序中的异常,提高...

    BusinessExceptionDemo.zip

    springboot全局异常处理,入参出参及错误日志打印

Global site tag (gtag.js) - Google Analytics