国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Java基礎(chǔ)筆記-異常

2019-11-15 00:14:45
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
java基礎(chǔ)筆記-異常

Java中的異常機(jī)制:

Throwable類是 Java 語(yǔ)言中所有錯(cuò)誤或異常的超類。主要包括兩個(gè)子類: Error和Exception.

一般中要處理的異常是Exception.

Java中最常見(jiàn)的處理方式是try catch finally.格式為:

try

{

  需要被檢測(cè)的異常.

}

catch(異常類 變量)

{

  處理異常的代碼()處理方式

}

finally

{

  一定會(huì)被執(zhí)行的代碼語(yǔ)句

}

一個(gè)簡(jiǎn)單的異常處理代碼及有關(guān)函數(shù)的應(yīng)用:

 1 /* 2 異常:Exception. 3 處理異常的方式: 4 try 5 { 6     需要被檢測(cè)的代碼. 7 } 8 catch(異常類 變量) 9 {10     處理異常的代碼,處理方式.11 12 }13 finally14 {15     一定會(huì)被執(zhí)行的語(yǔ)句.16 }17 */18 class ExceptionDemo19 {20     public static void main(String args [])21     {22         Demo d = new Demo();23         //int a = d.div(4,1);24         try25         {26             int a = d.div(4,0);27             System.out.

用try catch finally也處理捕捉多個(gè)異常,在聲明異常時(shí),應(yīng)該聲明更具體的異常.

當(dāng)出現(xiàn)了多個(gè)catch時(shí),聲明了多個(gè)異常時(shí),父類異常塊應(yīng)該放在代碼的最下面,如果放在最上面會(huì)導(dǎo)致子類異常永遠(yuǎn)無(wú)法執(zhí)行到.

異常的聲明:用關(guān)鍵字 throws.在java中可以用throws和throws來(lái)拋出異常.

throw和throws的區(qū)別在于:

throws:使用在函數(shù)上(所謂函數(shù)上就是在函數(shù)名的小括號(hào)與大括號(hào)之間),后面跟異常類,可以有多個(gè)異常類,用","(逗號(hào))隔開(kāi)即可.

throw:使用在函數(shù)內(nèi)(在大括號(hào)之內(nèi)),后面跟的是異常對(duì)象,格式例如: throw new 異常類名();

在實(shí)際應(yīng)用中,可以自定義異常,自定義異常需要繼承一個(gè)異常類,可以是Error類,Exception類,或者它們的根類:Throwable類.

格式:(例如聲明一個(gè)自定義的Exception異常類)

class 自定義異常類名(一般寫(xiě)成xxxException) extends Exception

{

  xxxException(String message)

  {

    super(message);

  }

}

上面的自定義異常類,因?yàn)閖ava已經(jīng)在父類中已經(jīng)把異常類的信息都完成了,子類異常類在構(gòu)造時(shí),

將異常的信息傳遞給父類,通過(guò)super語(yǔ)句,就可以直接調(diào)用getMessage()獲取異常信息.(有關(guān)父類的方法可以查閱Java API)

自定義異常類只能手動(dòng)拋出,是無(wú)法自動(dòng)拋出的.

相關(guān)的例子代碼:

 1 class ExceptionDemo2 2 { 3     public static void main(String args []) 4     { 5         Demo d = new Demo(); 6         try 7         { 8             int a = d.div(4,-9); 9             System.out.println("a = "+a);10         }11         catch(FuShuException e)    12         {13             System.out.println(e.toString());14             //System.out.println("出現(xiàn)了負(fù)數(shù).");15             System.out.println("錯(cuò)誤的負(fù)數(shù)是:"+e.getValue());16         }        17         System.out.println("It's over.");18         19     }20 }21 22 class FuShuException extends Exception23 {24     private int value;25     /*26     private String msg;27     FuShuException(String msg)28     {29         this.msg = msg;30     }31     public String getMessage()32     {33         return msg;34     }35     */36     FuShuException(String msg,int value)37     {38         super(msg);39         this.value = value;40     }41     42     public int getValue()43     {44         return value;45     }46 }47 48 class Demo49 {50     int div(int a,int b)throws FuShuException  //throws 使用在函數(shù)上.51     {52         if(b<0)53             throw new FuShuException("出現(xiàn)了除數(shù)是負(fù)數(shù)的情況",b); //throw 使用在函數(shù)內(nèi).54         return a/b;55 }    }

Java中有一種特別的異常類:RuntimeException

1.該異常如果在函數(shù)內(nèi)拋出了,在函數(shù)上不聲明,編譯也是可以通過(guò)的,(其他Exception等類是在函數(shù)內(nèi)拋出了必須在函數(shù)上聲明的)

2.如果在函數(shù)上聲明了該類異常,調(diào)用者可以不進(jìn)行處理.

因此使用自定義異常的時(shí)候,如果該異常的發(fā)生,無(wú)法繼續(xù)進(jìn)行運(yùn)算,那么就可以讓該自定義異常繼承RuntimeException.

最后是一個(gè)異常的相關(guān)練習(xí)代碼:

 1 class BlueScreen extends Exception 2 { 3     BlueScreen(String message) 4     { 5         super(message); 6     } 7 } 8 class Smoke extends Exception 9 {10     Smoke(String message)11     {12         super(message);13     }14 }15 16 class NoPlanException extends Exception17 {18     NoPlanException(String message)19     {20         super(message);21     }22 }23 24 class Computer25 {26     private int state = 3;27     28     public void run()throws BlueScreen,Smoke29     {30         if(state==2)31             throw new BlueScreen("電腦藍(lán)屏了");32         if(state==3)33             throw new Smoke("電腦冒煙了");34         System.out.println("電腦運(yùn)行");35     }36     public void reset()37     {38         state = 1;39         System.out.println("電腦重啟");40     }    41 }42 43 class Teacher44 {45     private String name;46     private Computer comp;47     Teacher(String name)48     {49         this.name = name;50         comp = new Computer();51     }52     public void prelect()throws NoPlanException53     {54         try55         {56             comp.run();57         }58         catch(BlueScreen e)59         {60             test();61             comp.reset();62         }63         catch(Smoke e)64         {65             throw new NoPlanException("課時(shí)無(wú)法繼續(xù)."+e.getMessage());66         }67         System.out.println("老師講課");68     }69     public void test()70     {71         System.out.println("練習(xí)");72     }73 }74 75 76 class ExceptionTest77 {78     public static void main(String args[])79     {80         Teacher t = new Teacher("張老師");81         try82         {83             t.prelect();84         }85         catch(NoPlanException e)86         {87             System.out.println(e.toString());88             System.out.println("換老師或者電腦,不行就放假.");89         }90     }91 }

  


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 淳安县| 海伦市| 樟树市| 宝鸡市| 万载县| 桂林市| 墨江| 雷山县| 巴马| 长春市| 聊城市| 锡林郭勒盟| 北辰区| 松阳县| 阿拉善左旗| 府谷县| 通河县| 富阳市| 堆龙德庆县| 苗栗县| 怀安县| 黄冈市| 佛学| 兴和县| 昭平县| 博乐市| 兴宁市| 佛教| 密云县| 海淀区| 周至县| 马山县| 耒阳市| 绥阳县| 凭祥市| 玉环县| 开原市| 云龙县| 城步| 武宁县| 新化县|