英文:
Why I have to surround with try/cacth
问题
我有一个方法
private void writeObject(ObjectOutputStream oos) throws IOException
在方法体中,我写了一些HashMap的keySet
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();
}
});
而且我不明白为什么
更新 我不明白为什么我需要在方法体中处理异常,如果我在方法标题中声明我想要将其抛出。
英文:
I have method
private void writeObject(ObjectOutputStream oos) throws IOException
In body I write keySet of some HashMap
for(E e : map.keySet()) {
oos.writeObject(e);
}
And it's look OK
But if I want to replase this code on
map.forEach((k, v) -> oos.writeObject(k));
I have to surround it with try/catch. Like this
map.forEach((k, v) -> {
try {
oos.writeObject(k);
} catch (IOException e) {
e.printStackTrace();
}
});
And I can't understand for what
Update I can't understand why I need to processed exception in method body if I anounce in method title that I want it to throw away.
答案1
得分: 1
这是因为forEach()接受Consumer作为参数。而Consumer没有声明抛出任何已检查异常。因此,你的lambda表达式也应该是Consumer,并且不应抛出任何已检查异常。因此,任何已检查异常都应该在你的lambda体内捕获。
英文:
That is because forEach() takes Consumer as argument. And Consumer isn't declared throws any checked exception. So your lambda should also be Consumer and do not throw any checked exceptions. So any checked exception should be caught in you lambda body.
答案2
得分: 0
**try** 块将执行可能会抛出异常的敏感代码
**catch** 块将在 **try** 块中抛出一个捕获到的异常类型时使用
方法原型中的 **throws** 关键字用于指定你的方法可能会抛出指定类型的异常。当你有一个已检查异常(必须处理的异常),而你不想在当前方法中捕获它时,这很有用。
英文:
The try block will execute a sensitive code which can throw exceptions
The catch block will be used whenever an exception (of the type caught) is thrown in the try block
The throws keyword in the method prototype is used to specify that your method might throw exceptions of the specified type. It's useful when you have checked exception (exception that you have to handle) that you don't want to catch in your current method.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论