Und*_*Dog 6 java exception-handling exception
class Y {
public static void main(String[] args) throws RuntimeException{//Line 1
try {
doSomething();
}
catch (RuntimeException e) {
System.out.println(e);
}
}
static void doSomething() throws RuntimeException{ //Line 2
if (Math.random() > 0.5) throw new RuntimeException(); //Line 3
throw new IOException();//Line 4
}
}
Run Code Online (Sandbox Code Playgroud)
当我抛出两种类型的异常(Line4中的IOException和Line3中的RunTimeException)时,我发现我的程序在我在第1行和第2行的throws子句中指示"IOException"之前不会编译.
而如果我反向"抛出"以指示抛出IOException,则程序会成功编译,如下所示.
class Y {
public static void main(String[] args) throws IOException {//Line1
try {
doSomething();
}
catch (RuntimeException e) {
System.out.println(e);
}
}
static void doSomething() throws IOException {//Line 2
if (Math.random() > 0.5) throw new RuntimeException();//Line 3
throw new IOException();//Line 4
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我总是会对IOException使用"throws",即使还抛出了RuntimeException(第3行)?
Roh*_*ain 15
因为IOException是Checked Exception,应该处理或声明要抛出.相反,RuntimeException是一个未经检查的例外.你不需要处理或声明它被抛出在方法throws子句中(我的意思是,如果你不处理未经检查的异常,它在语法上是正确的.编译器不会生气).但是在某些情况下,您需要根据某些未经检查的异常处理并采取相应措施.
相关文章:
参考文献:
| 归档时间: |
|
| 查看次数: |
21527 次 |
| 最近记录: |