springboot全局異常處理器 捕獲全局異常怎么處理?
捕獲全局異常怎么處理?將可能引發(fā)異常的代碼段放在try塊中,將處理異常的代碼放在catch塊中。catch語句的順序很重要。當異常發(fā)生時,它向上傳遞堆棧,每個catch塊都有機會處理它。通過將異常類型
捕獲全局異常怎么處理?
將可能引發(fā)異常的代碼段放在try塊中,將處理異常的代碼放在catch塊中。catch語句的順序很重要。當異常發(fā)生時,它向上傳遞堆棧,每個catch塊都有機會處理它。通過將異常類型與catch塊中指定的異常名稱相匹配,可以確定處理異常的catch塊。例如,下面的catch塊將捕獲簡單對象訪問協(xié)議(soap)異常:
catch(soapexception){控制臺寫入線(“SOAPExceptionErrorCode:{0}”,
e。子代碼.代碼.名稱)
控制臺寫入線(“soapexceptionmessages:{0}”,
e.Message)}CatcheAsSoapException控制臺寫入線(“SOAPExceptionErrorCode:{0}”,例如。子代碼.代碼.名稱)
控制臺寫入線(“Soapexceptionmessage is:{0}”,e.message)endtry如果沒有特定類型的catch塊,則可能的常規(guī)catch塊將捕獲異常。例如,您可以通過添加以下代碼來捕獲常規(guī)異常:
catch(exception){控制臺寫入線(“ExceptionMessage:{0}”,e.Message)}捕獲異??刂婆_寫入線(“exceptionmessage:{0}”,e.message)endtry將特定類型異常的catch塊放在常規(guī)異常之前。
公共語言運行庫將捕獲catch塊未捕獲的異常。根據(jù)運行時的配置,可以顯示調試對話框,或者可以停止程序的執(zhí)行,并且可以顯示包含異常信息的對話框。
java異常從業(yè)務層集中拋出,是不是每個控制層方法都要trycatch?
控制層中有兩種異常:一種是預期的,另一種是可預測的。這種異常需要捕獲并“嘗試修復”。例如,在查詢用戶信息RPC的過程中,存在異常,包括500ah和404ah。對于客戶端,基本上不需要重試,這可以通過一個明確的錯誤代碼來通知。相反,在超時的情況下,可以通知客戶端稍后再試,不同的錯誤代碼可以引導客戶端進行不同的操作。另一種情況是控制層本身不考慮。在這種情況下,盲目的嘗試/捕捉?jīng)]有多大意義。它通常在框架級進行統(tǒng)一處理,包括記錄異常信息和優(yōu)雅的返回失敗。
最后,對于try/catch的使用,我們并不意味著我們看不到異常,但我們更多地考慮捕獲后我可以做什么,以及我是否可以嘗試解決此問題。如果沒有,我們可以把它扔到上層,記錄并報警。如果我們不把這個問題想清楚,就很容易形成一個禁忌(吞下例外)。