2014-08-30 71 views
0

例波紋管的程序,凡在try塊defectedCode()方法被調用,那麼爲什麼只有輸出只顯示C,帶有「Exception in thread」主「java.lang.Error」。時拋出新的錯誤()被寫在try塊,爲什麼不執行catch塊。它進入最後只能.Latter代碼也不會執行

public class ExceptionTest { 

    public static void defectedCode(){ 

     throw new Error(); 
    } 

    public static void main(String args[]){ 

     try{ 
      defectedCode(); 
      System.out.println("A"); 

     }catch(Exception e){ 

      System.out.println("B"); 

     }finally{ 

      System.out.println("C"); 
     } 
     System.out.print("D"); 
    } 
} 
Exception in thread "main" java.lang.Error 

C 

at ExceptionTest.defectedCode(ExceptionTest.java:15) 

at ExceptionTest.main(ExceptionTest.java:21) 

Java Result: 1 

回答

2

因爲ErrorException,所以catch塊不監視它

使用throw new Exception()

5

造成這種情況的主要原因是,你扔一個錯誤,但你趕上例外。 如果你看一下Throwable層次結構,那麼點就很清楚了。您無法捕獲異常錯誤。因此catch塊沒有被輸入並最終被調用。

試試這個:

try{ 
     defectedCode(); 
     System.out.println("A"); 

    }catch(Throwable e){ 

     System.out.println("B"); 

    }finally{ 

     System.out.println("C"); 
    } 

enter image description here

0

Error不是Exception

的基類Throwable的對象是Throwable
錯誤和異常有兩種不同類型的可拋出的。然而,通常是不應該的錯誤被抓住,這就是爲什麼人們使用catch(Exception e)趕上基本上,他們應該捕獲所有異常。

顯然,由於Error不是Exception的子類,因此它不受catch(Exception e)的影響,所以未被捕獲。 finally始終執行,無論是否拋出已經陷入與否。

0

你不應該捕獲錯誤

一個錯誤「表示嚴重的問題,合理的應用程序不應該試圖捕獲的。」

了異常「表示條件合理的應用程序想要捕獲的。」

談論你的代碼,你扔一個錯誤,捕獲異常,它必須由現在他們2個離散實體

誤差的RuntimeException &沿其子類是unchecked異常明顯。所有其他異常類都是檢查異常。

經過異常通常是那些從一個程序可以恢復&它可能是從編程這種例外恢復一個好主意。示例包括FileNotFoundException,ParseException等。程序員需要通過使用try-catch塊來檢查這些異常,或將其返回給調用者

另一方面,我們有未經檢查的異常。這些都是那些如果一切順利都不會發生的例外,但它們確實發生了。示例包括ArrayIndexOutOfBoundException,ClassCastException等。許多應用程序將使用try-catch或throws子句來處理RuntimeExceptions &的子類,但從語言的角度來看,它並不是必需的。請注意,從RuntimeException中恢復通常是可能的,但設計類/異常的人認爲沒有必要讓最終程序員檢查這些異常。

錯誤也是未經檢查的例外&程序員不需要對這些做任何事情。事實上,對於錯誤使用try-catch子句是一個壞主意。大多數情況下,從錯誤中恢復是不可能的。&程序應該被允許終止。示例包括OutOfMemoryError,StackOverflowError等。

請注意,雖然錯誤是未經檢查的異常,但我們不應該嘗試處理它們,但可以在代碼中處理RuntimeExceptions(也是未經檢查的異常)。檢查的異常應該由代碼處理。

0

雖然道德上你不應該捕捉到錯誤,但你仍然可以捕捉到它作爲Throwable Object。

相關問題