SpringBoot-2.X 学习笔记01 全局/自定义异常处理

SpringBoot-2.* 学习笔记01 全局/自定义异常处理


1 全局异常处理 返回 Json 数据,如果要返回指定错误页面,参考:2 自定义异常处理

package com.xu.springboot.utils;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

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

/**
 * SprinBoot-2.* 异常处理
 * @ClassName: ExceptionHander.java  
 * @Description: SprinBoot-2.* 全局/自定义异常处理  
 * @author: hyacinth
 * @date: 2019年7月29日 下午9:38:46     
 * @Copyright: hyacinth
 */
@ControllerAdvice
public class ExceptionHander {
	
	/**
	 * SprinBoot-2.* 全局异常处理  
	 * @Title: handerException   
	 * @Description: 全局异常处理
	 * @param: exception 异常
	 * @param: request 请求   
	 * @return: Object 返回Json
	 * @date: 2019年7月31日 下午10:15:11    
	 * @throws
	 */
	@ExceptionHandler(value = Exception.class)
	@ResponseBody// 全局异常处理---返回Json
	public Object handerException(Exception exception,HttpServletRequest request) {
		Map<String, Object> map=new HashMap<String, Object>();
		map.put("code", 200);
		map.put("message", exception.getMessage());
		map.put("url", request.getRequestURI());
		return map;
	}

}

2 自定义异常处理
2.1 新建一个自定义异常类继承RuntimeException

package com.xu.springboot.utils;

/**
 * SprinBoot-2.* 自定义异常处理
 * @ClassName: ExceptionEntity   
 * @Description: TODO   
 * @author: hyacinth
 * @date: 2019年7月29日 下午9:37:39     
 * @Copyright: hyacinth
 */
public class MyException extends RuntimeException{

	/**   
	 * @Fields serialVersionUID:TODO
	 * @Date 2019年7月29日 下午9:35:19
	 */ 
	private static final long serialVersionUID = -8810233016579430240L;

	private String code;
	
	private String message;

	public MyException(String code,String message) {
		this.code = code;
		this.message = message;
	}
	
	
	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}


	@Override
	public String toString() {
		return "MyException [code=" + code + ", message=" + message + "]";
	}
	
}

2.2 异常处理controller

package com.xu.springboot.utils;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

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

/**
 * SprinBoot-2.* 异常处理
 * @ClassName: ExceptionHander.java  
 * @Description: SprinBoot-2.* 全局/自定义异常处理  
 * @author: hyacinth
 * @date: 2019年7月29日 下午9:38:46     
 * @Copyright: hyacinth
 */
@ControllerAdvice
public class ExceptionHander {
	
	/**
	 * SprinBoot-2.* 自定义异常处理  
	 * @Title: handerMyException   
	 * @Description: 自定义异常处理
	 * @param: exception 自定义异常
	 * @return: Object 返回页面
	 * @date: 2019年7月31日 下午10:15:11    
	 * @throws
	 */
	@ExceptionHandler(value = MyException.class)// 自定义异常处理---返回页面
	public Object handerMyException(MyException exception) {
		ModelAndView view=new ModelAndView();
		Map<String, Object> map=new HashMap<String, Object>();
		map.put("code", exception.getCode());
		map.put("message", exception.getMessage());
		view.addObject("msg", map);
		view.setViewName("/login");//自定义错误页面
		return view;
	}
	
}

3 异常处理测试类

package com.xu.springboot.controler;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.xu.springboot.utils.MyException;

@Controller
@RequestMapping("/exception")
public class ExceptionController {
	
	@RequestMapping("/test01")
	public void test1() {//1 全局异常
		int a=1/0;
	}
	
	@RequestMapping("/test02")
	public void test2() {//2 自定义异常
		try {
			int a=1/0;
		} catch (Exception e) {
			throw new MyException("300", e.getMessage());//抛出自定义异常类
		}
	}
	
}

你可能感兴趣的:(Java,SpringBoot,SpringBoot-2.X,SprinBoot-2.X,学习笔记)