spring框架做全局异常捕获_springboot 全局异常捕获

package com.example.demo.Config;

import org.springframework.ui.Model;

import org.springframework.web.bind.WebDataBinder;

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

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

import org.springframework.web.bind.annotation.InitBinder;

import org.springframework.web.bind.annotation.ModelAttribute;

import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

Create with Intellij idea

User:Mingtian

Date:2018/8/20

Time:15:49

全局异常信息

*/

@ControllerAdvice //@ControllerAdvice 作用:增强型控制器,对于控制器的全局配置放在同一个位置

public class ErrorException {

/**

应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器

@param binder

*/

@InitBinder

public void initBinder(WebDataBinder binder) {}

/**

把值绑定到Model中,使全局@RequestMapping可以获取到该值

@param model

*/

@ModelAttribute

public void addAttributes(Model model,HttpServletRequest request) {

model.addAttribute(“user”, request.getRemoteUser());//登陆用户

}

//@ExceptionHandler(异常类)这个注解则表示Controller中任何一个方法发生异常,则会被注解了@ExceptionHandler的方法拦截到。

// 对应的异常类执行对应的方法,如果都没有匹配到异常类,则采用近亲匹配的方式。

@ExceptionHandler(value =Exception.class)

publicObjecterrorHandler(HttpServletRequestrequest,

HttpServletResponseresponse,

Exceptione){

e.printStackTrace();//打印错误信息

ModelAndViewmv=newModelAndView();

mv.addObject("url",request.getRequestURL());//存放请求地址

mv.addObject("exception",e);//存放错误信息

mv.setViewName("error");//定义的错误页面

returnmv;

}

//判断是否是ajax请求

publicstaticbooleanisAjax(HttpServletRequestrequest){

return(request.getHeader("X-Requested-With")!=null

&&"XMLRequest".equals(request.getHeader("X-Requested-With").toString()));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot提供了全局异常处理机制,可以通过以下几个步骤搭建全局异常捕获。 1. 创建一个全局异常处理类,使用@ControllerAdvice注解标记该类为全局异常处理类,并使用@ExceptionHandler注解定义要捕获异常类型。 2. 在全局异常处理类中编写异常处理方法,通过@ExceptionHandler注解标注,指定要捕获异常类型。在方法中可以定义异常处理的逻辑,比如返回自定义的错误信息、记录日志等。 3. 如果要返回自定义的错误信息,可以创建一个自定义的返回结果类,用于封装错误信息。在异常处理方法中将错误信息封装到自定义的返回结果类中,并将其返回给前端。 4. 使用@ControllerAdvice注解标记的全局异常处理类,会自动将其注册为bean,并作为全局异常处理器生效。 下面是一个简单的示例代码: ```java @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity<ErrorResponse> handleException(Exception ex) { ErrorResponse error = new ErrorResponse(); error.setMessage("系统内部错误"); error.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value()); return new ResponseEntity<>(error, HttpStatus.INTERNAL_SERVER_ERROR); } } public class ErrorResponse { private String message; private int status; // 省略getter和setter方法 } ``` 在上述示例中,我们通过@ControllerAdvice注解标记了一个全局异常处理类GlobalExceptionHandler,并通过@ExceptionHandler注解定义了handleException方法,用于捕获Exception类型的异常。在方法中,我们创建了一个ErrorResponse对象,并将错误信息封装到该对象中返回给前端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值