使用未检查的异常实现java应用程序
可能重复:使用未检查的异常实现java应用程序,java,exception,checked,unchecked,Java,Exception,Checked,Unchecked,可能重复: 我一直在读关于java中检查异常和未检查异常的争论,我知道它们之间的区别,但我不完全清楚如何选择其中一个。我们真的有选择吗?java没有强迫我们使用try-catch,以防出现检查过的异常。我们如何仅使用未检查的异常来实现应用程序,如何处理此类应用程序可能出现已检查异常的情况。如果有人愿意用一些关于如何将检查异常转换为未检查异常的代码示例来为我澄清这一点,那将是非常棒的:)您没有选项来更改内置在您使用的库(包括JDK)中的检查异常 但是如果你愿意的话,你可以把它们包装起来,然后像未
我一直在读关于java中检查异常和未检查异常的争论,我知道它们之间的区别,但我不完全清楚如何选择其中一个。我们真的有选择吗?java没有强迫我们使用try-catch,以防出现检查过的异常。我们如何仅使用未检查的异常来实现应用程序,如何处理此类应用程序可能出现已检查异常的情况。如果有人愿意用一些关于如何将检查异常转换为未检查异常的代码示例来为我澄清这一点,那将是非常棒的:)您没有选项来更改内置在您使用的库(包括JDK)中的检查异常 但是如果你愿意的话,你可以把它们包装起来,然后像未经检查一样重新抛出。您可以将影响最小化到必须尝试/捕获它的方法的范围
您可以让您创建的所有自定义异常扩展
RuntimeException
选中异常是指在表示不应该发生的意外行为(例如除以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
)并不能改善任何情况