前情提要
不管是編寫什麼樣的程序,都免不了會出現很多異常,通常我們開發者而言並不會對所有的異常都會進行相應的處理,比如一般的空指針異常、數值操作異常、文件不存在異常等…(其實,開發一個好的項目還是要將所有的異常都進行相應的處理,以便於每次出現異常了能立馬通過輸出日誌知道異常的原因和發生位置)SpringBoot提供了全局異常捕獲機制,對相應的web應用下面的所有異常進行捕獲,在對異常的處理上爲我們節省了不少的時間和經歷。那麼,現在就通過一個小小的例子來學習吧
SpringBoot實現全局異常捕獲
首先,創建一個全局異常捕獲類,該類代碼如下:
package org.framework.demo.section1;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import javax.servlet.http.HttpServletRequest;
/**
* 進行全局異常捕獲
* @Author chengxi
*/
@ControllerAdvice
public class MyExceptionHandler {
@ExceptionHandler(value = Exception.class)
public void defaultExceptionHandler(HttpServletRequest req, Exception e){
e.printStackTrace();
System.out.println("全局異常捕獲中");
}
}
然後編寫一個測試url請求處理,拋出一個異常:
package org.framework.demo.section1
import com.google.gson.Gson
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
@RestController
@SpringBootApplication
@RequestMapping("demo")
public class HelloWorld {
@RequestMapping("/errortest")
public Integer ErrorTest(){
return 100/0
}
public static void main(String[] args){
SpringApplication.run(HelloWorld.class, args)
}
}
最後run Hello World,然後輸入網址:localhost:8080/demo/errortest
,在控制檯將會報錯,因爲這個url請求我們設置的會拋出一個異常,在一系列報錯信息中我們可以看到全局異常捕獲處理已經生效