異常處理和全局異常處理


在我們正常的增刪改查業務中 ,如果發生系統異常,則直接會給用戶拋出不友好的異常信息。為了增加用戶的體驗,應該給一些適當信息進行提示。例如刪除頻道的代碼,如下

 

 紅框圈起來的是可以給用戶友好提示的,但是當執行刪除這一行代碼,如果失敗了有可能系統會拋出異常。那這個時候就不應該把異常信息直接返回給用戶。

如果我要們防止方法出現異常,那么我們需要在所有的增刪改查請求都添加 try() catch()

 

 

項目開發中一般會設置全局異常處理,不管系統發生了任何不可知的異常信息,都應該給用戶返回友好提示信息。

 

 

 全局異常處理 代碼 如下

新建類ExceptionCatch

 

@ControllerAdvice//控制器增強 @Log4j2 public class ExceptionCatch { //捕獲Exception此類異常 @ExceptionHandler(Exception.class) @ResponseBody public ResponseResult exception(Exception exception) { exception.printStackTrace(); //記錄日志打印 log.error("catch exception:{}", exception.getMessage()); //返回自己定義的通用異常 return ResponseResult.errorResult(AppHttpCodeEnum.SERVER_ERROR); } }




 Execption 是不是最大的異常? Execption 可以攔截所有異常嗎?
  Execption 攔不住 Throwable

  另外當有多個異常處理的方法時,會先匹配異常范圍小的

 

 

try{}   catch{}   finally{}

永久執行代碼快   finally 何時不執行

1. 在finally語句塊中發生了異常。
2. 在前面的代碼中用了System.exit(0)退出程序。
3. 程序所在的線程死亡。
4. 關閉CPU

 

捕獲異常在catch塊里一定會進入finally嗎?catch里能return嗎?catch里return還會進finally嗎?在try里return呢是什么情況?

 

 無論是否捕獲或處理異常,finally塊里的語句都會被執行。當在try塊或catch塊中遇到return語句時,finally語句塊將在方法返回之前被執行。

 

 

如果finally中有return語句,那么程序就直接return了,這樣將導致返回值不是try或catch中保存的返回值,為此Java編譯器把finally中的return語句實現為一個warning

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM