我一直在阅读关于java中已检查和未经检查的异常的争论,我知道不同但我不完全清楚我们如何选择一个而不是另一个。我们真的有任何选择吗?没有java强制我们使用try catch以防有可能出现检查异常。我们如何仅使用未经检查的异常来实现应用程序,我们如何处理可能存在此类应用程序的已检查异常的情况。如果有人能够通过一些关于如何将已检查的异常转换为未经检查的异常的代码示例来为我清除这一点,那将是非常棒的:)
答案 0 :(得分:0)
您没有选项可以更改内置于您使用的库中的已检查异常,包括JDK。
但如果你愿意的话,你可以将它们包起来并重新投掷。您可以最小化对必须尝试/捕获它的方法范围的影响。
您可以将自己创建的所有自定义异常扩展为RuntimeException
。
答案 1 :(得分:0)
检查异常意味着抛出不应发生意外行为的情况(例如,除以0),但可能出现的情况以及程序员应该负责管理它们的情况。
这是Java语言和Java API的设计,它非常有效,因为在使用提供可能导致特殊情况的API的API时,您始终知道应该关注什么。
我没有看到忘记检查异常的重点,当然你可以封装所有可以引发异常的内容,这样你就可以在内部管理发生的事情并抛出一个未经检查的(自定义)异常,但是你必须要关心关于这些问题无论如何。
我能看到的唯一安全方法是:
class UncheckedFileNotFoundException extends RuntimeException {
..
}
class Foobar {
public static void method(String path) {
try {
FileReader reader = new FileReader(path);
}
catch (FileNotFoundException e) {
// code;
throw new UncheckedFileNotFoundException();
}
}
}
但这并没有解决问题:如果找不到文件,那么调用者应该做相应的事情并允许他只是忽略异常或隐藏该方法可以抛出的事实(因为你没有方法签名中throws FileNotFoundException
的商品并没有改善任何东西。