Java 为什么我必须用try/cacth来包围
我有办法Java 为什么我必须用try/cacth来包围,java,try-catch,Java,Try Catch,我有办法 private void writeObject(ObjectOutputStream oos) throws IOException 在body中,我编写了一些HashMap的键集 for(E e : map.keySet()) { oos.writeObject(e); } 看起来还不错 但是如果我想在上面重放这段代码 map.forEach((k, v) -> oos.writeObject(k)); 我必须用try/catc
private void writeObject(ObjectOutputStream oos) throws IOException
在body中,我编写了一些HashMap的键集
for(E e : map.keySet()) {
oos.writeObject(e);
}
看起来还不错
但是如果我想在上面重放这段代码
map.forEach((k, v) -> oos.writeObject(k));
我必须用try/catch来包围它。像这样
map.forEach((k, v) -> {
try {
oos.writeObject(k);
} catch (IOException e) {
e.printStackTrace();
}
});
我不明白为什么
更新如果我在方法标题中声明要丢弃异常,我无法理解为什么我需要在方法正文中处理异常。try块将执行敏感代码,该代码可能抛出异常 每当在try块中抛出异常(类型为catch)时,将使用catch块
方法原型中的throws关键字用于指定方法可能会抛出指定类型的异常。当您选中了不希望在当前方法中捕获的异常(您必须处理的异常)时,它非常有用。这是因为forEach()将Consumer作为参数。并且未声明使用者抛出任何已检查的异常。因此,您的lambda也应该是使用者,并且不抛出任何已检查的异常。因此,任何选中的异常都应该在lambda主体中捕获。您是说当您使用`for(E:map.keySet(){oos.writeObject(E);}`时,您不必使用
try catch
,但当替换代码时,您必须使用try catch
?是的。对不起,我的英语不好,谢谢。我会去读更多关于lambda的书