您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何理解對Java的異常”,在日常操作中,相信很多人在如何理解對Java的異常問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何理解對Java的異常”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
背景
不管是工作中還是面試中,異常這一塊還是非常重要的。作為Java開發人員來說,學會如何處理異常,哪些異常必須自己處理,哪些異常可以往外拋等等,這些都是必需品。
生活總有你意想不到的驚喜和意外,我們的code也是一樣。
異常不懂,佛祖也保佑不了你。
今天我們就來聊聊Java異常的話題。我們可以把Throwable當做Java異常的根類(祖宗)。因為實現類太多,所以下面大致列了幾個常見的實現類。
Error
錯誤:表示系統級的錯誤和程序不必處理的異常,是 Java 運行環境中的內部錯誤或者硬件問題。
例如:內存資源不足等。
對于這種錯誤,程序基本無能為力,除了退出運行外別無選擇,它是由 Java 虛擬機拋出的。
Exception
異常:表示需要捕捉或者需要程序進行處理的異常,它處理的是因為程序設計的瑕疵而引起的問題或者在外的輸入等引起的一般性問題,是程序必須處理的。
Exception 又分為運行時異常,受檢查異常。
RuntimeException(運行時異常)
表示無法讓程序恢復的異常,導致的原因通常是因為執行了錯誤的操作,建議終止邏輯,因此,編譯器不檢查這些異常。
CheckedException(受檢查異常)
是表示程序可以處理的異常,也即表示程序可以修復(由程序自己接受異常并且做出處理),所以稱之為受檢查異常。
Checked異常的處理方式有兩種:
當前方法明確知道如何處理該異常,程序應該使用try--catch 代碼塊來捕獲異常,然后在對應的catch模塊中修復異常。
當前方法不知道如何處理這種異常,應該定義該方法時就聲明跑出該異常。
Throwable 類常用方法?
getMessage()方法:返回異常發生時的詳細信息。
getCause()方法:獲得導致當前 Throwable 異常的 Throwable 異常。
getStackTrace() 方法:獲得 Throwable對象封裝的異常信息。
printStackTrace()方法:在控制臺上打印。
請列出 5 個運行時常見異常?
NullPointerException
IndexOutOfBoundsException
ClassCastException
ArrayStoreException
BufferOverflowException
異常處理有哪些關鍵字?
拋出異常:throw,throws
捕獲異常:try,catch,finally
throw 與 throws 的區別 ?
throw ,用于在程序中顯式地拋出一個異常實例。
throws ,用于指出在該方法中沒有處理的異常。每個方法必須顯式指明哪些異常沒有處理,以便該方法的調用者可以預防可能發生的異常。最后,多個異常用逗號分隔。
異常處理中 finally 語句塊的重要性?
不管程序是否發生了異常, finally 語句塊都會被執行,甚至當沒有catch 聲明但拋出了一個異常時, finally 語句塊也會被執行。
finally 語句塊通常用于釋放資源,如 I/O 緩沖區、數據庫連接、釋放鎖等等。
異常使用方式
異常處理規則
如何自定義異常?
除了JDK定義好的異常類以外,在開發過程中我們也可以根據業務的異常情況自定義異常類。
用戶自定義異常都應該繼承Exception基類,如果用戶想自定義Runtime異常,則應該繼承RuntimeException基類。
定義異常時,通常有兩個構造方法:
無參構造方法
有參構造方法,這個參數是字符串,這個字符串作為對該異常信息描述,也就是getMessage()方法的返回值(比如說:“用戶密碼有誤”、“xx接口返回參數為空”等)。
不過在項目中可能沒這么簡單,可能還會對其進行再次封裝。
但是基本上都是有兩個參數:code+msg;
code:主要是對業務中的異常進行歸類,結合Http的code來定義。
msg:主要是業務異常的信息提示。
你們項目中的自定義異常類是如何封裝的呢?不知道的就回去翻翻你們項目中的自定義是如何寫的,這就把學習和實踐結合起來了。
到此,關于“如何理解對Java的異常”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。