Error和Exception,throw和throws的區別

1 Error類和Exception類

1.1 Error(錯誤)

1.2 Exception(異常)

1.3 常見的RuntimeException異常

1.4 常見的CheckedException異常

2 throw和throws

2.1 位置不同

2.2 功能不同


1 Error類和Exception類

Error類和Exception類都是繼承Throwable類

1.1 Error(錯誤)

是系統中的錯誤,程序員是不能改變的和處理的,是在程序編譯時出現的錯誤,只能通過修改程序才能修正。一般是指與虛擬機相關的問題,如系統崩潰,虛擬機錯誤,內存空間不足,方法調用棧溢等。對於這類錯誤的導致的應用程序中斷,僅靠程序本身無法恢復和和預防,遇到這樣的錯誤,建議讓程序終止。

1.2 Exception(異常)

表示程序可以處理的異常,可以捕獲且可能恢復。遇到這類異常,應該儘可能處理異常,使程序恢復運行,而不應該隨意終止異常。

Exception又分爲兩類

  • CheckedException:(編譯時異常) 需要用try——catch顯示的捕獲或者直接throws異常。
  • UnCheckedException(RuntimeException):(運行時異常)不需要捕獲,對於程序錯誤(不可恢復)的異常使用RuntimeException。

1.3 常見的RuntimeException異常

  • NullPointerException - 空指針引用異常
  • ClassCastException - 類型強制轉換異常。
  • IllegalArgumentException - 傳遞非法參數異常。
  • ArithmeticException - 算術運算異常
  • ArrayStoreException - 向數組中存放與聲明類型不兼容對象異常
  • IndexOutOfBoundsException - 下標越界異常

1.4 常見的CheckedException異常

  • SQLException
  • OException
  • ClassNotFoundException
  • NamingException,
  • ServletException,

我們在編寫程序過程中try——catch捕獲到的或者直接throws的異常都是CheckedException。

2 throw和throws

2.1 位置不同

  • throws 用在函數頭上,後面跟的是異常類,可以跟多個;
  • throw 用在函數體內,後面跟的是異常對象。

2.2 功能不同

  • throws  用來聲明異常,讓調用者只知道該功能可能出現的問題,可以給出預先的處理方式;
  • throw 拋出具體的問題對象,執行到throw,功能就已經結束了,跳轉到調用者,並將具體的問題對象拋給調用者。也就是說  throw  語句獨立存在時,下面不要定義其他語句,因爲執行不到。
  • throws 表示出現異常的一種可能性,並不一定會發生這些異常;throw 則是拋出了異常,執行throw 則一定拋出了某種異常對象。
  • 兩者都是消極處理異常的方式,只是拋出或者可能拋出異常,但是不會由函數去處理異常,真正的處理異常由函數的上層調用處理。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章