我正在玩一些异常程序,遇到了一些我以前从未遇到过的东西。
import java.io.*;
class ExceptionTest
{
public static void main(String[] args)
{
try
{
System.out.println("hello");
}
catch(IOException ioe)
{
System.err.println("ioexception was thrown!!");
}
}
}
这会引发编译器错误:
ExceptionTest.java:10: exception java.io.IOException is never thrown in body of
corresponding try statement
catch(IOException ioe)
^
1 error
我的问题是为什么会这样?
为什么编译器会担心一段它肯定永远不会到达的代码。它可能只是一个警告,而不是一个完整的错误。毕竟,我们可能希望保留 catch 块作为我们将来可能进行的一些更改的备份,或者程序员可能只是在一些编辑后忘记将其删除。
我知道我知道它可以使我们免于不必要的击键等。但是它不应该过多地打扰编译器来引发错误。还是有其他原因??
代码中的 IOException catch 块也会产生编译器错误,但 Exception catch 块不会......为什么会这样?提前谢谢!!