我有这两个java代码:
class test {
public static void main(String[] args) throws IOException {
System.out.println("Before try”");
try{}
catch(Throwable d ) {}
System.out.println("done");
}
}
它将编译并打印在尝试完成之前。
class test {
public static void main(String[] args) throws IOException {
System.out.println("Before try”");
try{}
catch(java.io.IOException e ) {}
System.out.println("done");
}
}
}
这将导致编译错误:
exception java.io.IOException is never thrown in body of corresponding
try statement
at javaapplication8.test.main(Try.java:63)
抛出异常和IOException之间有什么区别来获得这些结果,是否有规则要知道需要抛出哪个异常?
答案 0 :(得分:1)
Java有一个检查异常的概念。除非它们是Error
或RuntimeException
在catch类中,编译器可以确定是否可以抛出已检查的异常(在正常情况下),但它无法判断您是否抛出了未经检查的异常,因此如果您捕获任何未经检查的异常或者是父母,它无法确定你是否可以抛弃它。
答案 1 :(得分:0)
您对main
的声明承诺它可能会抛出IOException
,但您的代码违反了这一承诺(因为您自己抓住了它)。