【发布时间】:2019-06-11 02:22:50
【问题描述】:
为什么我需要将 throws 子句放在 main 方法中来处理异常?它不应该只是应该处理异常的 try-catch 吗?对不起我的英语
public static void main(String[] args) throws IOException {
createFileDude();
}
public static void createFileDude() throws IOException {
File file = new File("C:\\Users\\User\\Desktop\\Test.txt");
try {
System.out.println("Create file>> " + file.createNewFile());
} catch (IOException e) {
e.printStackTrace();
throw e;
}
}
【问题讨论】:
-
您在
catch块中重新抛出异常... -
一个更好的问题是为什么实际上你从一个catch块中调用
throw e;?在这种情况下,它真的没有什么意义。 -
这只是一个例子;-;
-
不,这是您问题的症结所在,也是您问题的全部原因。摆脱那些废话,问题就消失了。通过抛出异常,您的 try/catch 并不能真正处理异常,而是将其卸载到下一个级别。
-
try 块实际上是在声明“我将处理这个异常”,然后 catch 中的 throw 通过声明“不,事实上,我不会处理它”来反驳这一点