【问题标题】:Runtime Exception can be thrown?可以抛出运行时异常吗?
【发布时间】:2013-10-28 19:51:26
【问题描述】:

我编写了一个类,我试图在其中抛出运行时异常。代码如下

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();
}
}

我的疑问是我们可以抛出运行时异常吗? 请帮忙

【问题讨论】:

  • 是的,你可以。您可以抛出任何扩展 Throwable 的东西 - 检查 javadocs。
  • 如果你不能从运行时异常中恢复,那么你可以抛出它
  • 是的,您可以抛出 RuntimeException。您还说,“我怀疑我们没有处理主类中抛出的错误,但我的 JVM 没有抛出错误?”抛出的错误是什么?您能否提供有关该错误是什么以及您实际看到的内容的更多信息?
  • 对不起,这是我的错误。我们需要在 main 中处理它

标签: java exception runtimeexception


【解决方案1】:

RunTimeException 是一个unchecked exception。您可以抛出它,但不一定非要抛出它,除非您想向 API 的用户显式指定此方法可以抛出未经检查的异常。但是,如果您在该方法的 javadoc 中提到这个事实(该方法可以抛出 RunTimeException),那么即使这似乎也没有必要。

所以,简而言之,是的,你可以抛出它,但你不必这样做,因为它不会为你提供任何给定的优势,并且会花费你几行额外的代码

【讨论】:

    【解决方案2】:
    throw new RuntimeException('someMessagehere')
    

    【讨论】:

      【解决方案3】:

      您可以抛出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(或任何派生的)表现得像一个正常的异常,即。如果没有被捕获,它会终止你的程序。

      【讨论】:

        【解决方案4】:

        理想情况下,不应故意抛出运行时异常。 Java将异常分为Checked Exception和Unchecked,即运行时异常。我们应该总是抛出检查异常。未经检查的异常不应该出现在程序中,因为它们应该以编程方式而不是通过抛出它们来处理。

        【讨论】:

        • 这是一个强烈的意见问题。为什么 Checked Exceptions 是一个坏主意有很多很好的论据。
        • Checked Exception 要求客户端(调用系统)处理它们并为 Exceptional 场景显示适当的错误消息。我想知道为什么 Checked Exception 是个坏主意的好论据:)
        • google 上有很多资源(例如这里:blog.philipphauer.de/checked-exceptions-are-evil)。我不一定试图说服你检查的异常是完全邪恶的......但我强烈不同意你的说法,即“理想情况下,永远不应该故意抛出运行时异常”。
        猜你喜欢
        • 2016-05-31
        • 2012-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-13
        • 1970-01-01
        • 1970-01-01
        • 2012-08-21
        相关资源
        最近更新 更多