0

在 Java 中,有一些类型的异常需要 throws 语句:

public void myMethod() throws IOException {
  throw new IOException("Error!");
}

而其他人则没有:

public void myOtherMethod() {
  throw new IllegalArgumentException("Error!");
}

public void myThirdMethod() {
  throw new Error("Error!");
}

throws第一种方法不会在没有语句的情况下编译。

确定Exception/是否Error需要throws声明的标准是什么?

4

2 回答 2

2

编译器检查和抱怨的异常 在java中称为检查异常。

在编译时,java 编译器检查程序是否包含已检查异常的处理程序。Java 编译器分析通过执行方法或构造函数可能导致检查异常。对于每个可能结果的检查异常,方法或构造函数的 throws 子句必须提及该异常的类或其超类。

从 JLS 了解更多信息:http: //docs.oracle.com/javase/specs/jls/se5.0/html/exceptions.html

IOException 是一个检查异常,因此 java 编译器会要求您捕获或抛出它。而 IllegalArgumentException 是运行时异常,编译器不会检查或抱怨。

于 2013-07-18T14:18:15.377 回答
1

派生的异常RuntimeException不需要声明,其他的需要声明。

于 2013-07-18T14:18:37.460 回答