Throwable可以分成兩種:
Error
Exception:
執行階段異常(非受檢異常)
#非執行階段異常(受檢異常)
#Error錯誤:Error是程式無法處理的錯誤,它是由jvm產生拋出的,例如OutOfMemoryError,ThreadDeath等,這些例外發生時,jvm會選擇終止程式執行
Exception:是程式本身可以處理的異常
運行時異常:都是RuntimeException類及子類,如NullPointerException(空指針),IndexOutOfBoundException(數組越界)等,這些異常可以選擇捕獲處理,或者可以不處理
非運行時異常:(受檢異常)時除了RuntimeException以外的異常,類型上屬於Exception類,從程序語法角度這些異常必須要進行處理,如果不處理,程式不餓能通過編譯,如IOException,SQIException
#try,catch,finally皆不能單獨使用,三者可以組合使用,組合方式:try…catch, try…catch…finally, try…finally ,其中catch可以有一個或多個,finally語句最多只能有一個
三個語句區塊中變數的作用域為程式碼區塊,分別獨立的不能互相訪問,如果要在三塊中都可以訪問,就把變數定義到這些區塊外邊
如果存在多個catch區塊,最多只會符合一個異常類別且執行該catch區塊程式碼,而不會在執行其他catch區塊,且符合順序是從上到下,最多只會匹配一個異常類,也就是說也可以一個異常類都不執行
catch捕獲的異常類不能重複,並且先捕獲子類異常再捕獲父類異常
無論try中語句有沒有問題,finally中的語句一定執行,finally為程式提供統一的出口,保證程式狀態的統一管理,通常情況下finally中進行資源的關閉清除工作
package com.exception; public class Test { public static void main(String[] args) { int[] a=new int[5]; try { for (int i = 0; i <10 ; i++) { a[i]=i; } //空指针 }catch (ArrayIndexOutOfBoundsException e){ //弹出出错的地方 System.out.println("1"); e.printStackTrace(); //访问异常,数组越界 }catch (NullPointerException e){ System.out.println("2"); e.printStackTrace(); //无论有错与否,finally最终执行 } finally { System.out.println("都能执行"); } System.out.println("---------------"); } }
final:用於定義常數的關鍵字
finally:異常中總是可以執行的程式碼區塊
#finalize() :垃圾回收,該方法是系統調用,不用程式設計師手動調用
定義一個方法的時候可以使用throws關鍵字聲明,表示該方法時不處理該異常,而是交給方法呼叫者處理該異常
在定義方法時,throws關鍵字可以程式設計師自主選擇使用,如果使用了,那麼說明該方法時不處理該異常的
如果主方(main)也使用throws關鍵字,那麼就表示主方法也不處理異常,最後留給jvm處理,jvm處理異常就是終止程式
throws拋出一個子類別異常,呼叫該方法的呼叫者可以不必須處理該異常
注意:
throw關鍵字:是可以自訂異常,也就是拋異常,拋出的時候是一個異常類別的物件
throws:
用在方法宣告之後,跟著例外的是例外類別名稱
#可以跟多個例外類,用逗號隔開
#表示拋出異常,有該方法的呼叫者處理
throws表示出現異常的一種可能性,不一定會發生異常
#throw:
用在方法體內,跟著出現的是例外物件
只能拋出一個例外對象
表示拋出異常,有方法體內語句處理
#throw拋異常是一定會發生,並不是一種可能
程式碼表示:
package com.test; public class Throw { //throws Exception 代表该方法出现异常时不做处理 public void deposit(int num1,int num2) throws Exception { // RuntimeException()是运行时异常最大的父类 int sum; if(num2==0){ throw new RuntimeException("可以自定义一个异常抛出:除数不能为0"); }else{ sum=num1/num2; } } }
以上是分析Java異常Exception實例的方法及步驟的詳細內容。更多資訊請關注PHP中文網其他相關文章!