好,不好和惡劣三種。
同時(shí)向你提供了一些解決這些問(wèn)題的技巧。
首先解釋一些java異常處理中必須搞清楚的定義和機(jī)制。Java語(yǔ)言規(guī)范將自Error類或RuntimeException類衍生出來(lái)的任何違例都稱作“不可檢查”(Unchecked)異常;其他所有異常則稱作“可檢查”(Checked)異常。
所謂可檢查異常,是指我們應(yīng)該自行處理的異常。至于處理的手段,要么加以控制(try catch),要么通告(throws)他們有可能產(chǎn)生。通常,應(yīng)捕捉那些已知如何處理的異常,而通告那些不知如何處理的異常。
而對(duì)那些不可檢查異常來(lái)說(shuō),他們要么在我們的控制之外(Error),要么是我們首先就不該答應(yīng)的情況(RuntimeException).
至于異常的指定,Java的規(guī)則非常簡(jiǎn)單:一個(gè)方法必須通告自己可能產(chǎn)生的所有可檢查異常。編寫自己的方法時(shí),并不一定要通告出方法實(shí)際可能產(chǎn)生的每一個(gè)異常對(duì)象,要想理解什么時(shí)候必須要方法的throws叢句來(lái)通告異常,就必須知道對(duì)一個(gè)異常來(lái)說(shuō),他只有可能在下面四種情況下才會(huì)產(chǎn)生:
1.調(diào)用了可能產(chǎn)生異常的方法。比如BufferedReader類的readLine方法。該方法通告java.io.IOException異常
2.偵測(cè)到一個(gè)錯(cuò)誤,并用throw語(yǔ)句產(chǎn)生異常。
3.出現(xiàn)一個(gè)編程錯(cuò)誤。比如a[-1] = 0。
4.Java產(chǎn)生內(nèi)部錯(cuò)誤。
假如出現(xiàn)頭兩種情況之一,必須告訴打算使用自己方法的人:假如使用這個(gè)方法,可能造成一個(gè)異常的產(chǎn)生(即在方法頭上使用throws),一個(gè)簡(jiǎn)單的記憶方法:
只要含有throw,就要通告throws。假如一個(gè)方法必須同時(shí)處理多個(gè)異常,就必須在頭內(nèi)指出所有異常。就像下例展示的那樣,用逗號(hào)對(duì)他們進(jìn)行分割:
1 | class Animation { public Image loadImage(Strint s) throws EOFException,MalformedURLException { ………… } } |
1 | try { FileInputStream fis = new FileInputStream(args[0]); // other code here ... } catch (FileNotFoundException fnfe) { System.out. |
1 | try { // code here with checked exceptions } catch (Throwable t) { t.printStackTrace(); } |
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注