全局異常一般有很多種方式灾炭,比如自定義返敬,繼承之類的挡闰,一般來說,主要還是用2個(gè)注解
- @ControllerAdvice
- @ExceptionHandler
拋出異常
package com.jiataoyuan.demo.springboot.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.TimeoutException;
/**
* @author TaoYuan
* @version V1.0.0
* @date 2018/4/16 0016
* @description description
*/
@RestController
@RequestMapping("/exception")
public class ExceptionsController {
@GetMapping()
public String Main(){
return "<h1>Exceptions!</h1>";
}
// 拋出異常
@GetMapping("/timeout")
public String throwTimeOutException() throws TimeoutException {
throw new TimeoutException();
}
@GetMapping("/runtime")
public String throwRuntimeException(){
throw new RuntimeException();
}
@GetMapping("/common")
public String throwException() throws Exception {
throw new Exception();
}
}
處理異常
package com.jiataoyuan.demo.springboot.controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.context.request.WebRequest;
import java.util.concurrent.TimeoutException;
/**
* @author TaoYuan
* @version V1.0.0
* @date 2018/4/16 0016
* @description description
*/
@RestControllerAdvice
public class DefaultExceptionAdvice {
//處理異常
// @ExceptionHandler(RuntimeException.class)
// public String RuntimeException(Exception e, WebRequest webRequest){
// return "<p>ExceptionType:" + e + "</p>"
// + "<p>WebRequest:" + webRequest + "</p>";
// }
//
// @ExceptionHandler(TimeoutException.class)
// public String TimeOutException(Exception e, WebRequest webRequest){
// return "<p>ExceptionType:" + e + "</p>"
// + "<p>WebRequest:" + webRequest + "</p>";
// }
@ExceptionHandler(Exception.class)
public String Exception(Exception e, WebRequest webRequest){
return "<p>ExceptionType:" + e + "</p>"
+ "<p>WebRequest:" + webRequest + "</p>";
}
}
基本就是這樣了古戴,實(shí)際開發(fā)過程中欠橘,肯定不會(huì)這么隨意,一般都會(huì)繼承RuntimeException然后進(jìn)行細(xì)分现恼。