• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. JAVA認證面試試題

        時間:2024-10-07 08:38:50 JAVA認證 我要投稿

        2017年JAVA認證面試試題

          Sun認證Java程序員考試旨在考察您通過應(yīng)用軟件分配進行復(fù)雜編程的能力。之后還要測試您完成編程所需的知識。下面是小編整理的關(guān)于JAVA認證面試試題,歡迎大家參考!

        2017年JAVA認證面試試題

          1) Java中什么是Exception?

          這個問題經(jīng)常在第一次問有關(guān)異常的時候或者是面試菜鳥的時候問。我從來沒見過面高級或者資深工程師的

          時候有人問這玩意,但是對于菜鳥,是很愿意問這個的。簡單來說,異常是Java傳達給你的系統(tǒng)和程序錯誤的方

          式。在java中,異常功能是通過實現(xiàn)比如Throwable,Exception,RuntimeException之類的類,然后還有一

          些處理異常時候的關(guān)鍵字,比如throw,throws,try,catch,finally之類的。 所有的異常都是通過Throwable

          衍生出來的。Throwable把錯誤進一步劃分為 java.lang.Exception 和 java.lang.Error. java.lang.Error 用

          來處理系統(tǒng)錯誤,例如java.lang.StackOverFlowError 或者 Java.lang.OutOfMemoryError 之類的。然后

          Exception用來處理程序錯誤,請求的資源不可用等等。

          2) Java中的檢查型異常和非檢查型異常有什么區(qū)別?

          這又是一個非常流行的Java異常面試題,會出現(xiàn)在各種層次的Java面試中。檢查型異常和非檢查型異常的

          主要區(qū)別在于其處理方式。檢查型異常需要使用try, catch和finally關(guān)鍵字在編譯期進行處理,否則會出現(xiàn)編譯

          器會報錯。對于非檢查型異常則不需要這樣做。Java中所有繼承自java.lang.Exception類的異常都是檢查型

          異常,所有繼承自RuntimeException的異常都被稱為非檢查型異常。你也可以查看下一篇文章來了解

          更多關(guān)于檢查型異常和非檢查型異常之間的區(qū)別。

          3) Java中的NullPointerException和ArrayIndexOutOfBoundException之間有什么相同之處?

          在Java異常面試中這并不是一個很流行的問題,但會出現(xiàn)在不同層次的初學(xué)者面試中,用來測試應(yīng)聘者對檢查

          型異常和非檢查型異常的概念是否熟悉。順便說一下,該題的答案是,這兩個異常都是非檢查型異常,都繼承自RuntimeException。該問題可能會引出另一個問題,即Java和C的數(shù)組有什么不同之處,因為C里面的數(shù)組是沒有

          大小限制的,絕對不會拋出ArrayIndexOutOfBoundException。

          4)在Java異常處理的過程中,你遵循的那些最好的實踐是什么?

          這個問題在面試技術(shù)經(jīng)理是非常常見的一個問題。因為異常處理在項目設(shè)計中是非常關(guān)鍵的,所以精通異常處

          理是十分必要的。異常處理有很多最佳實踐,下面列舉集中,它們提高你代碼的健壯性和靈活性:

          1) 調(diào)用方法的時候返回布爾值來代替返回null,這樣可以 NullPointerException。由于空指針是java異常里最惡

          心的異常。

          2) catch塊里別不寫代碼�?誧atch塊是異常處理里的錯誤事件,因為它只是捕獲了異常,卻沒有任何處理或者

          提示。通常你起碼要打印出異常信息,當然你最好根據(jù)需求對異常信息進行處理。

          3)能拋受控異常(checked Exception)就盡量不拋受非控異常(checked Exception)。通過去掉重復(fù)的異常處

          理代碼,可以提高代碼的可讀性。

          4) 絕對不要讓你的數(shù)據(jù)庫相關(guān)異常顯示到客戶端。由于絕大多數(shù)數(shù)據(jù)庫和SQLException異常都是受控異常,在Java中,

          你應(yīng)該在DAO層把異常信息處理,然后返回處理過的能讓用戶看懂并根據(jù)異常提示信息改正操作的異常信息。

          5) 在Java中,一定要在數(shù)據(jù)庫連接,數(shù)據(jù)庫查詢,流處理后,在finally塊中調(diào)用close()方法。

          5) 既然我們可以用RuntimeException來處理錯誤,那么你認為為什么Java中還存在檢查型異常?

          這是一個有爭議的問題,在回答該問題時你應(yīng)當小心。雖然他們肯定愿意聽到你的觀點,但其實他們最感興

          趣的還是有說服力的理由。我認為其中一個理由是,存在檢查型異常是一個設(shè)計上的決定,受到了諸如C++等比

          Java更早的編程語言設(shè)計經(jīng)驗的影響。絕大多數(shù)檢查型異常位于java.io包內(nèi),這是合乎情理的,因為在你請求了

          不存在的系統(tǒng)資源的時候,一段強壯的程序必須能夠優(yōu)雅的處理這種情況。通過把IOException聲明為檢查型異

          常,Java 確保了你能夠優(yōu)雅的對異常進行處理。另一個可能的理由是,可以使用catch或finally來確保數(shù)量受限

          的系統(tǒng)資源(比如文件描述符)在你使用后盡早得到釋放。

          6) throw 和 throws這兩個關(guān)鍵字在java中有什么不同?

          一個java初學(xué)者應(yīng)該掌握的面試問題。 throw 和 throws乍看起來是很相似的尤其是在你還是一個java初學(xué)者的時

          候。盡管他們看起來相似,都是在處理異常時候使用到的。但在代碼里的使用方法和用到的地方是不同的。throws

          總是出現(xiàn)在一個函數(shù)頭中,用來標明該成員函數(shù)可能拋出的各種異常, 你也可以申明未檢查的異常,但這不是編譯

          器強制的。如果方法拋出了異常那么調(diào)用這個方法的時候就需要將這個異常處理。另一個關(guān)鍵字 throw 是用來

          拋出任意異常的,按照語法你可以拋出任意 Throwable (i.e. Throwable 或任何Throwable的衍生類) , throw

          可以中斷程序運行,因此可以用來代替return . 最常見的例子是用 throw 在一個空方法中需要return的地方拋出 UnSupportedOperationException 代碼如下 :

          1 private static voidshow() {

          2 throw new UnsupportedOperationException(“Not yet implemented”);

          3 }

          7) 什么是“異常鏈”?

          “異常鏈”是Java中非常流行的異常處理概念,是指在進行一個異常處理時拋出了另外一個異常,由此產(chǎn)生

          了一個異常鏈條。該技術(shù)大多用于將“ 受檢查異常” ( checked exception)封裝成為“非受檢查異常”

          (unchecked exception)或者RuntimeException。順便說一下,如果因為因為異常你決定拋出一個新的異常,

          你一定要包含原有的異常,這樣,處理程序才可以通過getCause()和initCause()方法來訪問異常最終的根源。

          8) 你曾經(jīng)自定義實現(xiàn)過異常嗎?怎么寫的?

          很顯然,我們絕大多數(shù)都寫過自定義或者業(yè)務(wù)異常,像AccountNotFoundException。在面試過程中詢問

          這個Java異常問題的主要原因是去發(fā)現(xiàn)你如何使用這個特性的。這可以更準確和精致的去處理異常,當然這也跟

          你選擇checked 還是unchecked exception息息相關(guān)。通過為每一個特定的情況創(chuàng)建一個特定的異常,你就為

          調(diào)用者更好的處理異常提供了更好的選擇。相比通用異常(general exception),我更傾向更為精確的異常。大

          量的創(chuàng)建自定義異常會增加項目class的個數(shù),因此,在自定義異常和通用異常之間維持一個平衡是成功的關(guān)鍵。

          9) JDK7中對異常處理做了什么改變?

          這是最近新出的Java異常處理的面試題。JDK7中對錯誤(Error)和異常(Exception)處理主要新增加了2個特性,

          一是在一個catch塊中可以出來多個異常,就像原來用多個catch塊一樣。另一個是自動化資源管理(ARM), 也稱為

          try-with-resource塊。這2個特性都可以在處理異常時減少代碼量,同時提高代碼的可讀性。對于這些特性了解,

          不僅幫助開發(fā)者寫出更好的異常處理的代碼,也讓你在面試中顯的更突出。我推薦大家讀一下Java 7攻略,這樣

          可以更深入的了解這2個非常有用的特性。

          10) 你遇到過 OutOfMemoryError 錯誤嘛?你是怎么搞定的?

          這個面試題會在面試高級程序員的時候用,面試官想知道你是怎么處理這個危險的OutOfMemoryError錯誤的。

          必須承認的是,不管你做什么項目,你都會碰到這個問題。所以你要是說沒遇到過,面試官肯定不會買賬。要是

          你對這個問題不熟悉,甚至就是沒碰到過,而你又有3、4年的Java經(jīng)驗了,那么準備好處理這個問題吧。在回答

          這個問題的同時,你也可以借機向面試秀一下你處理內(nèi)存泄露、調(diào)優(yōu)和調(diào)試方面的牛逼技能。我發(fā)現(xiàn)掌握這些技

          術(shù)的人都能給面試官留下深刻的印象。

          11) 如果執(zhí)行finally代碼塊之前方法返回了結(jié)果,或者JVM退出了,finally塊中的代碼還會執(zhí)行嗎?

          這個問題也可以換個方式問:“如果在try或者finally的代碼塊中調(diào)用了System.exit(),結(jié)果會是怎樣”。

          了解finally塊是怎么執(zhí)行的,即使是try里面已經(jīng)使用了return返回結(jié)果的情況,對了解Java的異常處理都非常

          有價值。只有在try里面是有System.exit(0)來退出JVM的情況下finally塊中的代碼才不會執(zhí)行。

          12)Java中final,finalize,finally關(guān)鍵字的區(qū)別

          這是一個經(jīng)典的Java面試題了。我的一個朋友為Morgan Stanley招電信方面的核心Java開發(fā)人員的時候就

          問過這個問題。final和finally是Java的關(guān)鍵字,而finalize則是方法。final關(guān)鍵字在創(chuàng)建不可變的類的時候

          非常有用,只是聲明這個類是final的。而finalize()方法則是垃圾回收器在回收一個對象前調(diào)用,但也Java規(guī)

          范里面沒有保證這個方法一定會被調(diào)用。finally關(guān)鍵字是唯一一個和這篇文章討論到的異常處理相關(guān)的關(guān)鍵字。

          在你的產(chǎn)品代碼中,在關(guān)閉連接和資源文件的是時候都必須要用到finally塊。

          13)下面的代碼都有哪些錯誤:

          01 public static void start() throws IOException, RuntimeException{

          02

          03 throw new RuntimeException(“Not able to Start”);

          04 }

          05

          06 public static void main(String args[]) {

          07 try {

          08 start();

          09 } catch (Exception ex) {

          10 ex.printStackTrace();

          11 } catch (RuntimeException re) {

          12 re.printStackTrace();

          13 }

          14 }

          這段代碼會在捕捉異常代碼塊的RuntimeException類型變量“re”里拋出編譯異常錯誤。因為Exception是RuntimeException的超類,在start方法中所有的RuntimeException會被第一個捕捉異常塊捕捉,這樣就無法到

          達第二個捕捉塊,這就是拋出“exception java.lang.RuntimeException has already been caught”的編譯錯誤原因。

          14)下面的Java代碼都有哪些錯誤:

          01 public classSuperClass {

          02 public void start() throws IOException{

          03 throw new IOException(“Not able to open file”);

          04 }

          05 }

          06

          07 public class SubClass extendsSuperClass{

          08 public void start() throws Exception{

          09 throw new Exception(“Not able to start”);

          10 }

          11 }

          這段代碼編譯器將對子類覆蓋start方法產(chǎn)生不滿。因為每個Java中方法的覆蓋是有規(guī)則的,一個覆蓋的方法

          不能拋出的異常比原方法繼承關(guān)系高。因為這里的start方法在超類中拋出了IOException,所有在子類中的start

          方法只能拋出要么是IOExcepition或是其子類,但不能是其超類,如Exception。

          15)下面的Java異常代碼有什么錯誤:

          01 public static void start(){

          02 System.out.println(“Java Exception interivew question Answers for Programmers”);

          03 }

          04

          05 public static void main(String args[]) {

          06 try{

          07 start();

          08 }catch(IOException ioe){

          09 ioe.printStackTrace();

          10 }

          11 }

          上面的Java異常例子代碼中,編譯器將在處理IOException時報錯,因為IOException是受檢查異常,而start

          方法并沒有拋出IOException,所以編譯器將拋出“異常, java.io.IOException 不會在try語句體中拋出”,但

          是如果你將IOException改為Exception,編譯器報錯將消失,因為Exception可以用來捕捉所有運行時異常,這樣

          就不需要聲明拋出語句。我喜歡這樣帶有迷惑性的Java異常面試題,因為它不會讓人輕易的找出是IOException還

          是Exception。你也可以在 Joshua Bloach和Neil Gafter的Java謎題中找到一些有關(guān)Java錯誤和異常的具有迷惑

          性問題。

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【JAVA認證面試試題】相關(guān)文章:

        Java認證經(jīng)典面試題目07-02

        NIIT認證Java面試題及答案07-01

        java認證考試試題及答案07-21

        sun認證java基礎(chǔ)模擬試題10-26

        2016年Java認證考試題09-23

        NIIT認證Java基礎(chǔ)全真模擬試題09-17

        2016最新Java認證筆試題及答案01-21

        2016年Java認證筆試題及答案06-04

        2017年Java認證考試試題07-23

        NIIT認證Java考試題庫07-20

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 亚洲一线高清在线视频 | 亚洲人成综合在线 | 亚洲国产综合在线 | 中文字幕免费精品视频一级 | 亚洲中文字幕在线播放 | 伊人久久大香线焦综合5g |

            2017年JAVA認證面試試題

              Sun認證Java程序員考試旨在考察您通過應(yīng)用軟件分配進行復(fù)雜編程的能力。之后還要測試您完成編程所需的知識。下面是小編整理的關(guān)于JAVA認證面試試題,歡迎大家參考!

            2017年JAVA認證面試試題

              1) Java中什么是Exception?

              這個問題經(jīng)常在第一次問有關(guān)異常的時候或者是面試菜鳥的時候問。我從來沒見過面高級或者資深工程師的

              時候有人問這玩意,但是對于菜鳥,是很愿意問這個的。簡單來說,異常是Java傳達給你的系統(tǒng)和程序錯誤的方

              式。在java中,異常功能是通過實現(xiàn)比如Throwable,Exception,RuntimeException之類的類,然后還有一

              些處理異常時候的關(guān)鍵字,比如throw,throws,try,catch,finally之類的。 所有的異常都是通過Throwable

              衍生出來的。Throwable把錯誤進一步劃分為 java.lang.Exception 和 java.lang.Error. java.lang.Error 用

              來處理系統(tǒng)錯誤,例如java.lang.StackOverFlowError 或者 Java.lang.OutOfMemoryError 之類的。然后

              Exception用來處理程序錯誤,請求的資源不可用等等。

              2) Java中的檢查型異常和非檢查型異常有什么區(qū)別?

              這又是一個非常流行的Java異常面試題,會出現(xiàn)在各種層次的Java面試中。檢查型異常和非檢查型異常的

              主要區(qū)別在于其處理方式。檢查型異常需要使用try, catch和finally關(guān)鍵字在編譯期進行處理,否則會出現(xiàn)編譯

              器會報錯。對于非檢查型異常則不需要這樣做。Java中所有繼承自java.lang.Exception類的異常都是檢查型

              異常,所有繼承自RuntimeException的異常都被稱為非檢查型異常。你也可以查看下一篇文章來了解

              更多關(guān)于檢查型異常和非檢查型異常之間的區(qū)別。

              3) Java中的NullPointerException和ArrayIndexOutOfBoundException之間有什么相同之處?

              在Java異常面試中這并不是一個很流行的問題,但會出現(xiàn)在不同層次的初學(xué)者面試中,用來測試應(yīng)聘者對檢查

              型異常和非檢查型異常的概念是否熟悉。順便說一下,該題的答案是,這兩個異常都是非檢查型異常,都繼承自RuntimeException。該問題可能會引出另一個問題,即Java和C的數(shù)組有什么不同之處,因為C里面的數(shù)組是沒有

              大小限制的,絕對不會拋出ArrayIndexOutOfBoundException。

              4)在Java異常處理的過程中,你遵循的那些最好的實踐是什么?

              這個問題在面試技術(shù)經(jīng)理是非常常見的一個問題。因為異常處理在項目設(shè)計中是非常關(guān)鍵的,所以精通異常處

              理是十分必要的。異常處理有很多最佳實踐,下面列舉集中,它們提高你代碼的健壯性和靈活性:

              1) 調(diào)用方法的時候返回布爾值來代替返回null,這樣可以 NullPointerException。由于空指針是java異常里最惡

              心的異常。

              2) catch塊里別不寫代碼�?誧atch塊是異常處理里的錯誤事件,因為它只是捕獲了異常,卻沒有任何處理或者

              提示。通常你起碼要打印出異常信息,當然你最好根據(jù)需求對異常信息進行處理。

              3)能拋受控異常(checked Exception)就盡量不拋受非控異常(checked Exception)。通過去掉重復(fù)的異常處

              理代碼,可以提高代碼的可讀性。

              4) 絕對不要讓你的數(shù)據(jù)庫相關(guān)異常顯示到客戶端。由于絕大多數(shù)數(shù)據(jù)庫和SQLException異常都是受控異常,在Java中,

              你應(yīng)該在DAO層把異常信息處理,然后返回處理過的能讓用戶看懂并根據(jù)異常提示信息改正操作的異常信息。

              5) 在Java中,一定要在數(shù)據(jù)庫連接,數(shù)據(jù)庫查詢,流處理后,在finally塊中調(diào)用close()方法。

              5) 既然我們可以用RuntimeException來處理錯誤,那么你認為為什么Java中還存在檢查型異常?

              這是一個有爭議的問題,在回答該問題時你應(yīng)當小心。雖然他們肯定愿意聽到你的觀點,但其實他們最感興

              趣的還是有說服力的理由。我認為其中一個理由是,存在檢查型異常是一個設(shè)計上的決定,受到了諸如C++等比

              Java更早的編程語言設(shè)計經(jīng)驗的影響。絕大多數(shù)檢查型異常位于java.io包內(nèi),這是合乎情理的,因為在你請求了

              不存在的系統(tǒng)資源的時候,一段強壯的程序必須能夠優(yōu)雅的處理這種情況。通過把IOException聲明為檢查型異

              常,Java 確保了你能夠優(yōu)雅的對異常進行處理。另一個可能的理由是,可以使用catch或finally來確保數(shù)量受限

              的系統(tǒng)資源(比如文件描述符)在你使用后盡早得到釋放。

              6) throw 和 throws這兩個關(guān)鍵字在java中有什么不同?

              一個java初學(xué)者應(yīng)該掌握的面試問題。 throw 和 throws乍看起來是很相似的尤其是在你還是一個java初學(xué)者的時

              候。盡管他們看起來相似,都是在處理異常時候使用到的。但在代碼里的使用方法和用到的地方是不同的。throws

              總是出現(xiàn)在一個函數(shù)頭中,用來標明該成員函數(shù)可能拋出的各種異常, 你也可以申明未檢查的異常,但這不是編譯

              器強制的。如果方法拋出了異常那么調(diào)用這個方法的時候就需要將這個異常處理。另一個關(guān)鍵字 throw 是用來

              拋出任意異常的,按照語法你可以拋出任意 Throwable (i.e. Throwable 或任何Throwable的衍生類) , throw

              可以中斷程序運行,因此可以用來代替return . 最常見的例子是用 throw 在一個空方法中需要return的地方拋出 UnSupportedOperationException 代碼如下 :

              1 private static voidshow() {

              2 throw new UnsupportedOperationException(“Not yet implemented”);

              3 }

              7) 什么是“異常鏈”?

              “異常鏈”是Java中非常流行的異常處理概念,是指在進行一個異常處理時拋出了另外一個異常,由此產(chǎn)生

              了一個異常鏈條。該技術(shù)大多用于將“ 受檢查異常” ( checked exception)封裝成為“非受檢查異常”

              (unchecked exception)或者RuntimeException。順便說一下,如果因為因為異常你決定拋出一個新的異常,

              你一定要包含原有的異常,這樣,處理程序才可以通過getCause()和initCause()方法來訪問異常最終的根源。

              8) 你曾經(jīng)自定義實現(xiàn)過異常嗎?怎么寫的?

              很顯然,我們絕大多數(shù)都寫過自定義或者業(yè)務(wù)異常,像AccountNotFoundException。在面試過程中詢問

              這個Java異常問題的主要原因是去發(fā)現(xiàn)你如何使用這個特性的。這可以更準確和精致的去處理異常,當然這也跟

              你選擇checked 還是unchecked exception息息相關(guān)。通過為每一個特定的情況創(chuàng)建一個特定的異常,你就為

              調(diào)用者更好的處理異常提供了更好的選擇。相比通用異常(general exception),我更傾向更為精確的異常。大

              量的創(chuàng)建自定義異常會增加項目class的個數(shù),因此,在自定義異常和通用異常之間維持一個平衡是成功的關(guān)鍵。

              9) JDK7中對異常處理做了什么改變?

              這是最近新出的Java異常處理的面試題。JDK7中對錯誤(Error)和異常(Exception)處理主要新增加了2個特性,

              一是在一個catch塊中可以出來多個異常,就像原來用多個catch塊一樣。另一個是自動化資源管理(ARM), 也稱為

              try-with-resource塊。這2個特性都可以在處理異常時減少代碼量,同時提高代碼的可讀性。對于這些特性了解,

              不僅幫助開發(fā)者寫出更好的異常處理的代碼,也讓你在面試中顯的更突出。我推薦大家讀一下Java 7攻略,這樣

              可以更深入的了解這2個非常有用的特性。

              10) 你遇到過 OutOfMemoryError 錯誤嘛?你是怎么搞定的?

              這個面試題會在面試高級程序員的時候用,面試官想知道你是怎么處理這個危險的OutOfMemoryError錯誤的。

              必須承認的是,不管你做什么項目,你都會碰到這個問題。所以你要是說沒遇到過,面試官肯定不會買賬。要是

              你對這個問題不熟悉,甚至就是沒碰到過,而你又有3、4年的Java經(jīng)驗了,那么準備好處理這個問題吧。在回答

              這個問題的同時,你也可以借機向面試秀一下你處理內(nèi)存泄露、調(diào)優(yōu)和調(diào)試方面的牛逼技能。我發(fā)現(xiàn)掌握這些技

              術(shù)的人都能給面試官留下深刻的印象。

              11) 如果執(zhí)行finally代碼塊之前方法返回了結(jié)果,或者JVM退出了,finally塊中的代碼還會執(zhí)行嗎?

              這個問題也可以換個方式問:“如果在try或者finally的代碼塊中調(diào)用了System.exit(),結(jié)果會是怎樣”。

              了解finally塊是怎么執(zhí)行的,即使是try里面已經(jīng)使用了return返回結(jié)果的情況,對了解Java的異常處理都非常

              有價值。只有在try里面是有System.exit(0)來退出JVM的情況下finally塊中的代碼才不會執(zhí)行。

              12)Java中final,finalize,finally關(guān)鍵字的區(qū)別

              這是一個經(jīng)典的Java面試題了。我的一個朋友為Morgan Stanley招電信方面的核心Java開發(fā)人員的時候就

              問過這個問題。final和finally是Java的關(guān)鍵字,而finalize則是方法。final關(guān)鍵字在創(chuàng)建不可變的類的時候

              非常有用,只是聲明這個類是final的。而finalize()方法則是垃圾回收器在回收一個對象前調(diào)用,但也Java規(guī)

              范里面沒有保證這個方法一定會被調(diào)用。finally關(guān)鍵字是唯一一個和這篇文章討論到的異常處理相關(guān)的關(guān)鍵字。

              在你的產(chǎn)品代碼中,在關(guān)閉連接和資源文件的是時候都必須要用到finally塊。

              13)下面的代碼都有哪些錯誤:

              01 public static void start() throws IOException, RuntimeException{

              02

              03 throw new RuntimeException(“Not able to Start”);

              04 }

              05

              06 public static void main(String args[]) {

              07 try {

              08 start();

              09 } catch (Exception ex) {

              10 ex.printStackTrace();

              11 } catch (RuntimeException re) {

              12 re.printStackTrace();

              13 }

              14 }

              這段代碼會在捕捉異常代碼塊的RuntimeException類型變量“re”里拋出編譯異常錯誤。因為Exception是RuntimeException的超類,在start方法中所有的RuntimeException會被第一個捕捉異常塊捕捉,這樣就無法到

              達第二個捕捉塊,這就是拋出“exception java.lang.RuntimeException has already been caught”的編譯錯誤原因。

              14)下面的Java代碼都有哪些錯誤:

              01 public classSuperClass {

              02 public void start() throws IOException{

              03 throw new IOException(“Not able to open file”);

              04 }

              05 }

              06

              07 public class SubClass extendsSuperClass{

              08 public void start() throws Exception{

              09 throw new Exception(“Not able to start”);

              10 }

              11 }

              這段代碼編譯器將對子類覆蓋start方法產(chǎn)生不滿。因為每個Java中方法的覆蓋是有規(guī)則的,一個覆蓋的方法

              不能拋出的異常比原方法繼承關(guān)系高。因為這里的start方法在超類中拋出了IOException,所有在子類中的start

              方法只能拋出要么是IOExcepition或是其子類,但不能是其超類,如Exception。

              15)下面的Java異常代碼有什么錯誤:

              01 public static void start(){

              02 System.out.println(“Java Exception interivew question Answers for Programmers”);

              03 }

              04

              05 public static void main(String args[]) {

              06 try{

              07 start();

              08 }catch(IOException ioe){

              09 ioe.printStackTrace();

              10 }

              11 }

              上面的Java異常例子代碼中,編譯器將在處理IOException時報錯,因為IOException是受檢查異常,而start

              方法并沒有拋出IOException,所以編譯器將拋出“異常, java.io.IOException 不會在try語句體中拋出”,但

              是如果你將IOException改為Exception,編譯器報錯將消失,因為Exception可以用來捕捉所有運行時異常,這樣

              就不需要聲明拋出語句。我喜歡這樣帶有迷惑性的Java異常面試題,因為它不會讓人輕易的找出是IOException還

              是Exception。你也可以在 Joshua Bloach和Neil Gafter的Java謎題中找到一些有關(guān)Java錯誤和異常的具有迷惑

              性問題。