【发布时间】:2013-08-12 21:24:13
【问题描述】:
我在玩弄我的一些代码时遇到了一些我不完全理解的东西。我有一个名为 SentimentClassifier 的类,它的构造函数如下所示:
public SentimentClassifier(final int nGramToBeUsed) {
try {
classifier = (DynamicLMClassifier<?>) AbstractExternalizable.readObject(new File(etc));
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
我有另一个创建这个的类,像这样:
public TwitterManager(final int nGramToBeUsed) {
sentimentClassifier = new SentimentClassifier(nGramToBeUsed);
}
如果我像这样运行代码,一切正常。但是,如果我将第一个类从使用 try/catch 更改为 throw 异常,如下所示:
public SentimentClassifier(final int nGramToBeUsed) throws ClassNotFoundException, IOException {
classifier = (DynamicLMClassifier<?>) AbstractExternalizable.readObject(new File(etc));
}
突然第二班抱怨IOException 没有得到处理。为什么只针对thrown 异常而不针对try/catch 抛出此异常?
【问题讨论】:
-
Java 的许多 IO 方法(例如
File的构造函数要求方法位于 try/catch 块中。 -
@Xynariz:您能提供相应文档的链接吗?我确实查找了 API,但什么也没看到。可能只是错过了。
-
link here - 与大多数异常一样,IOException 必须被“捕获或声明为抛出”。
-
@Xynariz:我现在明白了。没有意识到当它被抛出时,它是调用方的责任来处理它。谢谢
-
阅读其他答案 - 他们说同样的话,但比我解释得更好。
标签: java exception-handling try-catch throwable