2013-10-20 94 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

相关问题