1. 程式人生 > >可捕獲異常與不可捕獲異常的區別?

可捕獲異常與不可捕獲異常的區別?

1、先明確概念:丟擲指的是不處理,捕獲則處理
捕獲異常是指發生異常時,最相應處理,避免程式崩潰
丟擲異常大概就是讓程式知道哪裡可能會存在異常,發生異常後,回滾處理
2、執行順序
丟擲異常異常後— 意味著catch程式碼塊後面就不再執行了;
不丟擲直接捕捉— 意味著catch程式碼塊後面還會繼續執行;
因為捕捉(即catch程式碼塊)是在try程式碼塊的後面執行的,然後你再throw一個Exception又是在catch程式碼塊捕捉到異常後執行的,也是說順序是先try–>catch->throw;
3、兩者區別
異常分為執行時異常(RuntimeException)、受檢異常(Exception)、系統錯誤error。
RuntimeException,也就是執行時異常,表示程式碼本身存在BUG,比如ArrayIndexOutOfBoundsException,陣列下標越界,陣列定義的長度不夠實際使用,程式碼若不調BUG進行處理肯定還會報錯,控制檯一旦報RuntimeException,就必須在程式碼中找BUG,因為程式碼BUG是人為粗心製造的,不是try-catch一下就能解決的。try-catch用在程式碼BUG上是毫無意義的,只需要寫程式碼時謹慎點就能減少BUG,而不是try-catch。
非RuntimeException,就是受檢異常。比如處理檔案流時的I/O問題,就屬於編譯時異常,相當於假設有IO異常就利用try-catch對其進行處理,或者 throws即可。
error,通常是系統出現了不可控制的錯誤,這個通常與程式無關,所以是不需要處理的。
下面給出執行時異常與受檢異常的清晰定義:
①受檢查異常表示程式可以處理的異常,如果丟擲異常的方法本身不能處理它,那麼方法呼叫者應該去處理它,從而使程式恢復執行,不至於終止程式。例如,噴墨印表機在列印檔案時,如果紙用完或者墨水用完,就會暫停列印,等待使用者新增列印紙或更換墨盒,如果使用者添加了列印紙或更換了墨盒,就能繼續列印。
②執行時異常表示無法讓程式恢復執行的異常,導致這種異常的原因通常是由於執行了錯誤操作。一旦出現了錯誤操作,建議終止程式並仔細的debug,因此Java編譯器不檢查這種異常。

4、各種情況

解決方案1:
捕獲異常,可以由程式設計師自行對出現的異常進行處理
丟擲異常,程式執行過程中產生的異常遞交給虛擬機器,由虛擬機器進行處理,異常的處理程式設計師無法干預
解決方案2:
丟擲異常是方法本身不進行處理這個異常需要呼叫方法的時候進行處理,捕獲異常是在方法本身自己將異常進行處理。
解決方案3:
捕獲就是catch
丟擲就是上拋
Java中的異常的捕獲和丟擲是什麼意思,有什麼區別
答:捕獲異常是指發生異常時,最相應處理,避免程式崩潰 丟擲異常大概就是讓程式知道哪裡可能會存在異常,發生異常後,回滾處理
java捕獲異常和丟擲異常有什麼區別?
答:捕獲異常,可以由程式設計師自行對出現的異常進行處理 丟擲異常,程式執行過程中產生的異常遞交給虛擬機器,由虛擬機器進行處理,異常的處理程式設計師無法干預
java異常丟擲異常後捕捉和不丟擲直接捕捉有什麼區別
答:1. 其實丟擲異常後應該就不能叫捕捉了 — 因為捕捉(即catch程式碼塊)是在try程式碼塊的後面執行的,然後你再throw一個Exception又是在catch程式碼塊捕捉到異常後執行的,也是說順序是先try–>catch->throw; 2. 丟擲異常異常後— 意味著catch程式碼塊後面就…
java自定義異常處理和系統異常處理在丟擲異常時有…
答:public class TestException { public static void main(String[] args) { try { Student s = new Student(-20, “張三”); } catch (ShuziException e) { System.out.println(e.getMessage()); } } } class Student { private int age; private S…
JAVA 關於丟擲和捕獲異常的問題
答:首先,你先無視掉那個機器人的回答吧…… 因為第3個catch捕獲的Exception類是ArithmeticException的子類,而你的程式丟擲的就是ArithmeticException類異常,那麼在第1個catch語句捕獲到的ArithmeticException類異常,同時也屬於Exception類異常,…
在java中的方法後面加個throws丟擲異常有什麼作用…
答:把異常拋給呼叫它的地方,如果你不加的話,main裡的try catch是拿不到 這個異常的。也就是說,你show方法出錯了。上一次也不知道怎麼回事。。。 同時,你加上throw exception。呼叫 的地方就必須try catch,不然編譯都不過。。這樣程式碼就更健壯…
Java中異常的宣告和丟擲異常有什麼區別?比如方法p…
答:這2個都是異常的宣告,宣告異常不一定要丟擲,可以自己捕獲異常並處理,也可以丟擲給呼叫它的函式,如果都沒有捕獲就是沒有使用try{}catch(),會一層層往外丟擲。 還有RuntimeException及其子類不用宣告異常,就是不用在函式上加throws Exception。
java中異常捕獲後不處理再丟擲什麼意思?
答:這種情況一般是為了處理必須catch的異常, 也就是受檢的異常, 之後, 再講這個異常翻譯成上層認識的異常。 其實, 你可以理解成做異常的轉譯, 以便與最外層的異常處理認識。 比如, 在最外層, 從業務上講, 你只定義了 AException, BExceptio…
java異常的問題:在catch塊中丟擲異常和直接丟擲處…
答:如果你向上層進行丟擲的話,那麼上層就要對這個可能出現的異常進行處理,總不能一直拋到客戶那裡吧,那這就算失敗了,因此捕捉異常是捕捉給開發人員看得,方便與除錯bug,捕捉異常的語句塊會執行catch外面的後面的語句(有點繞),丟擲則是直接給上一層進…
java手動throws異常和系統自動拋異常有什麼區別?
答:不是太明白什麼叫手動throw exception。如果你是說自己的程式碼裡有throw這樣的語句的話,那我可以告訴你,任何exception都是這樣的程式碼產生的。你自己的程式碼中加入throw語句的靈活性在於 1. 你可以定義自己的exception class,而不一定要用Java庫…
java異常丟擲異常後捕捉和不丟擲直接捕捉有什麼區別
throw; 2. 丟擲異常異常後- 意味著catch程式碼塊後面就不再執行了; 不丟擲直接捕捉- 意味著catch程式碼塊後面還會繼續執行。 ps: 不知道回答的對不對,不過希望對你有幫助…
Java中的異常的捕獲和丟擲是什麼意思,有什麼區別
捕獲異常是在已知方法中會產生(或不完全確定,但是可能會產生)異常的情況下,對能產生異常的程式碼部分進行的try catch處理 假設方法A 宣告的時候有宣告丟擲異常 void A() thro…
Java丟擲異常與發生異常的區別
來橧分
在Java中丟擲和捕獲異常,如果我不知道會出現什麼異常,該怎麼…
直接捕獲最高階的exception異常 打印出來看看就知道了
JAVA異常中的 捕捉與丟擲
try中包括了一段可能丟擲異常的程式碼。catch可以捕獲到相應的異常,再進行相應的處理。 丟擲可以手工throw,也有方法在有異常時不捕獲,而是拋給上級處理,這樣就要上級cat…
java中什麼時候該捕獲異常 什麼時候該傳遞異常?
捕獲異常:通常在執行之前java不報錯,但是執行後可能會出現某些未知的錯誤,但是還不想直接丟擲到上一級,那麼就需要通過”try{}catch”的形式進行異常捕獲,之後根據不同的異常…
java中什麼是丟擲異常?如何丟擲異常?
有異常的話,把滑鼠放到那行的呼叫方法上。他就出來一個小框,顯示出這行程式碼要出現的所有異常。如果你想複製他就按F2就可以複製它的異常了進行捕獲就可以了。試試看吧…
Java中異常的宣告和丟擲異常有什麼區別?比如方法p1可能會有…
這2個都是異常的宣告,宣告異常不一定要丟擲,可以自己捕獲異常並處理,也可以丟擲給呼叫它的函式,如果都沒有捕獲就是沒有使用try{}catch(),會一層層往外丟擲。 還有Runtime…
JAVA中的丟擲異常有什麼用
你在呼叫函式時,你是怎麼知道函式呼叫是否成功的?一般是根據函式返回值來判斷,比如… 捕獲的異常物件獲取更多的出錯資訊。 在java裡,throw關鍵字是用在語句裡面丟擲異常…
Java捕獲oracle丟擲的自定義異常問題
JAVA沒法子捕獲到你那個異常 可以考慮你那個異常的SQLSTATE,然後通過判斷SQLSTATE來作為你特定異常