java中的异常种类和区别以及处理机制和区别
java中的異常種類和區別以及處理機制和區別
按照異常需要處理的時機分為編譯時異常(也叫強制性異常)也叫 CheckedException 和運行時異常(也叫非強制性異常)也叫 RuntimeException。只有 java 語言提供了 Checked 異常,Java 認為 Checked異常都是可以被處理的異常,所以 Java 程序必須顯式處理 Checked 異常。如果程序沒有處理 Checked 異常,該程序在編譯時就會發生錯誤無法編譯。這體現了 Java 的設計哲學:沒有完善錯誤處理的代碼根本沒有機會被執行。
對 Checked 異常處理方法有兩種:
1.當前方法知道如何處理該異常,則用 try...catch 塊來處理該異常。2. 當前方法不知道如何處理,則在定義該方法是聲明拋出該異常。運行時異常只有當代碼在運行時才發行的異常,編譯時不需要 try catch。Runtime 如除數是 0 和數組下標越
界等,其產生頻繁,處理麻煩,若顯示申明或者捕獲將會對程序的可讀性和運行效率影響很大。所以由系統自動檢測并將它們交給缺省的異常處理程序。當然如果你有處理要求也可以顯示捕獲它們。
error 和 exception 的區別?
1. Error 類和 Exception 類的父類都是 Throwable 類,他們的區別如下。2. Error 類一般是指與虛擬機相關的問題,如系統崩潰,虛擬機錯誤,內存空間不足,方法調用棧溢出等。對于這類錯誤的導致的應用程序中斷,僅靠程序本身無法恢復和和預防,遇到這樣的錯誤,建議讓程序終止。3. Exception 類表示程序可以處理的異常,可以捕獲且可能恢復。遇到這類異常,應該盡可能處理異常,使程序恢復運行,而不應該隨意終止異常。4. Exception 類又分為運行時異常(Runtime Exception)和受檢查的異常(Checked Exception ),運行時異常;ArithmaticException,IllegalArgumentException,編譯能通過,但是一運行就終止了,程序不會處理運行時異常,出現這類異常,程序會終止。而受檢查的異常,要么用 try。。。catch 捕獲,要么用 throws 字句聲明拋出,交給它的父類處理,否則編譯不會通過。Java中的兩種異常類型是什么?他們有什么區別?
Java中有兩種異常:受檢查的(checked)異常和不受檢查的(unchecked)異常。不受檢查的異常不需要在方法或者是構造函數上聲明,就算方法或者是構造函數的執行可能會拋出這樣的異常,并且不受檢查的異常可以傳播到方法或者是構造函數的外面。相反,受檢查的異常必須要用throws語句在方法或者是構造函數上聲明。java 異常處理機制
Java 對異常進行了分類,不同類型的異常分別用不同的 Java 類表示,所有異常的根類為 java.lang.Throwable,Throwable 下面又派生了兩個子類:Error 和 Exception,Error 表示應用程序本身無法克服和恢復的一種嚴重問題。Exception 表示程序還能夠克服和恢復的問題,其中又分為系統異常和普通異常,系統異常是軟件本身缺陷所導致的問題,也就是軟件開發人員考慮不周所導致的問題,軟件使用者無法克服和恢復這種問題,但在這種問題下還可以讓軟件系統繼續運行或者讓軟件死掉,例如,數組腳本越界(ArrayIndexOutOfBoundsException),空指針異常(NullPointerException)、類轉換異常(ClassCastException);普通異常是運行環境的變化或異常所導致的問題,是用戶能夠克服的問題,例如,網絡斷線,硬盤空間不夠,發生這樣的異常后,程序不應該死掉。
java 為系統異常和普通異常提供了不同的解決方案,編譯器強制普通異常必須 try…catch 處理或用 throws 聲明繼續拋給上層調用方法處理,所以普通異常也稱為 checked 異常,而系統異??梢蕴幚硪部梢圆惶幚?#xff0c;所以,編譯器不強制用 try…catch 處理或用 throws 聲明,所以系統異常也稱為 unchecked 異常。
常見的運行時異常( RuntimeException)
1)java.lang.NullPointerException 空指針異常;出現原因:調用了未經初始化的對象或者是不存在的對象。 2)java.lang.ClassNotFoundException 指定的類找不到;出現原因:類的名稱和路徑加載錯誤;通常都是程序試圖通過字符串來加載某個類時可能引發異常。 3)java.lang.NumberFormatException 字符串轉換為數字異常;出現原因:字符型數據中包含非數字型字符。 4)java.lang.IndexOutOfBoundsException 數組角標越界異常,常見于操作數組對象時發生。 5)java.lang.IllegalArgumentException 方法傳遞參數錯誤。 6)java.lang.ClassCastException 數據類型轉換異常。 7)java.lang.NoClassDefFoundException 未找到類定義錯誤。 8)SQLException SQL 異常,常見于操作數據庫時的 SQL 語句錯誤。 9)java.lang.InstantiationException 實例化異常。 10)java.lang.NoSuchMethodException 方法不存在異常。throw 和 throws 的區別
throw:
1)throw 語句用在方法體內,表示拋出異常,由方法體內的語句處理。
2)throw 是具體向外拋出異常的動作,所以它拋出的是一個異常實例,執行 throw 一定是拋出了某種異常。
throws:
1)throws 語句是用在方法聲明后面,表示如果拋出異常,由該方法的調用者來進行異常的處理。
2)throws 主要是聲明這個方法會拋出某種類型的異常,讓它的使用者要知道需要捕獲的異常的類型。
3)throws 表示出現異常的一種可能性,并不一定會發生這種異常。
總結
以上是生活随笔為你收集整理的java中的异常种类和区别以及处理机制和区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线程中的各种锁
- 下一篇: 2020最新Java面试题(java,J