哪种异常需要方法的throws语句?

时间:2013-07-18 14:16:58

标签: java exception exception-handling error-handling throws

在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声明的标准是什么?

2 个答案:

答案 0 :(得分:2)

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

  

在编译时,java编译器检查程序是否包含   检查异常的处理程序。 Java编译器分析由哪些   检查异常可能是由于执行方法或   构造函数。对于每个已检查的异常,这是一个可能的结果,   throws子句的方法或构造函数必须提到类或   它的异常超类。

从JLS阅读更多内容:http://docs.oracle.com/javase/specs/jls/se5.0/html/exceptions.html

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

答案 1 :(得分:1)

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