2013-10-20 93 views
1

我寫了一個類,我試圖拋出一個運行時異常。代碼如下所示運行時異常可以被拋出?

public class ExceptionTest 

{ 

    public static void ReadFile() throws RuntimeException, FileNotFoundException{ 
    try{ 

    BufferedReader b =new BufferedReader(new FileReader("I:\\Workspace\\Basic Java\\bin\\Exceptions\\List To Read.txt")); 
    String s = b.readLine(); 
    while(s!=null){ 
     System.out.println(s); 
     s=b.readLine(); 
    } 
    } 
    catch(RuntimeException e){ 
     throw e; 
    } 
    catch(FileNotFoundException e){ 
     throw e; 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    } 

我的主類看起來像

public class TheMain { 
public static void main(String args[]){ 
    ExceptionTest.ReadFile(); 
} 
} 

我的疑問是我們可以拋出一個運行時異常? 請幫忙

+3

是的,你可以。你可以拋出任何延伸Throwable的東西 - 檢查javadoc。 – Augusto

+1

如果你不能從運行時異常中恢復,那麼你可以拋出它 – upog

+0

http://docs.oracle.com/javase/6/docs/api/java/lang/RuntimeException.html – Spiff

回答

1

您可以拋出java.lang.RuntimeException(或任何派生的異常),因爲它是一個正常的例外。與其他異常的不同之處在於,您不需要在拋出但未捕獲的異常列表中提及方法可能拋出的異常,即。

public void foo(int bar) throws RuntimeException { 
    throw new RuntimeException("foo(bar)"); 
} 

具有如

public void foo(int bar) { 
    throw new RuntimeException("foo(bar)"); 
} 

儘管如此,一個java.lang.RuntimeException(或任何來源的)的行爲類似於正常的異常,即,相同的效果。它會終止你的程序,如果沒有發現。

3

RunTimeExceptionunchecked exception。你可以拋出它,但你不一定非要,除非你想明確地向API的用戶指明這個方法可以拋出一個未經檢查的異常。但是,如果你在這個方法的javadoc中提到這個事實(該方法可以拋出一個RunTimeException),即使這似乎也沒有必要。

因此,簡而言之,是的,你可以扔掉它,但你沒有,因爲它不爲你提供任何給定的優勢,並花費你的代碼

3

throw new RuntimeException('someMessagehere')

-1
一些額外的行

理想情況下,運行時異常絕不應該故意拋出。 Java已將異常分爲檢查異常和未檢查即運行時異常。我們應該總是拋出檢查異常。未檢查的異常不應在程序中發生,因爲它們應該以編程方式處理,而不是通過拋出它們。

+0

這是一個強烈的意見。爲什麼Checked Exceptions是一個壞主意有很多好的理由。 – Ben

+0

檢查異常要求客戶端(呼叫系統)處理它們並針對特殊情況顯示適當的錯誤消息。我想知道爲什麼檢查異常是一個壞主意:) – Rakesh

+0

有很多資源在谷歌(例如在這裏:https://blog.philipphauer.de/checked-exceptions-are-evil/) 。我不一定試圖說服你,檢查異常是完全邪惡的......但我堅決不同意你的陳述,即「理想的運行時異常不應該故意拋出」。 – Ben

相關問題