[英]Why throw RuntimeException Error instead of IOException Message?
我从游戏书中获得了这段代码。 作者解释它将打开一个音乐文件。
public Music newMusic(String filename) {
try {
AssetFileDescriptor assetDescriptor = assets.openFd(filename);
return new AndroidMusic(assetDescriptor);
} catch (IOException e) {
throw new RuntimeException("Couldn't load music '" + filename + "'");
}
}
方法AssetFileDescriptor.openFd(filename) throws a IOException
。
我的问题是:为什么我们需要抛出RuntimeException
消息而不是IOException
消息?
IOException是已检查的异常,并且必须由引发该异常的任何方法声明。 RuntimeException未被选中,可以从任何方法中抛出。
如示例代码中所示,通常在无法从本地恢复检查的异常并且认为异常导致程序失败的情况下,可以在RuntimeException中包装检查的异常。 一旦将检查的异常包装在RuntimeException中,然后RuntimeException便可以一直传播到整个堆栈(如果发生),而不管是否存在异常声明。
因此,您无需将调用方法声明为catch或throwing IOException
。
在某些情况下,但并非在所有情况下,检查异常都可能很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.