Java 区分可恢复异常和不可恢复异常?
根据Oracle的定义,检查异常和运行时异常之间的一个不同点是“可恢复能力”。但是,我不明白如何区分可恢复异常和不可恢复异常之间的区别。有人告诉我:Java 区分可恢复异常和不可恢复异常?,java,exception,Java,Exception,根据Oracle的定义,检查异常和运行时异常之间的一个不同点是“可恢复能力”。但是,我不明白如何区分可恢复异常和不可恢复异常之间的区别。有人告诉我: “可恢复异常”“意味着它在异常发生时(由程序员)定义了一个场景。而且,“可恢复异常”涉及外部错误(而不是编程错误) “不可恢复异常”“意味着当异常发生时,您无法执行任何操作,这种情况下的解决方案只是修复源代码(重新编写代码)。“不可恢复异常”涉及编程错误(API错误、方法参数错误等) 但是,“可恢复”的概念并不意味着应用程序可以做一些事情来解决异
- “可恢复异常”“意味着它在异常发生时(由程序员)定义了一个场景。而且,“可恢复异常”涉及外部错误(而不是编程错误)
- “不可恢复异常”“意味着当异常发生时,您无法执行任何操作,这种情况下的解决方案只是修复源代码(重新编写代码)。“不可恢复异常”涉及编程错误(API错误、方法参数错误等)
- 但是,“可恢复”的概念并不意味着应用程序可以做一些事情来解决异常的原因,即使在某些情况下这是可能的
- 第一个异常:从不存在的文件读取(FileNotFoundException)
- 第二个异常:将数字除以0(算术异常)
- 第四个异常:调用null对象(NullPointerException)
- 第五个异常:将无效字符串转换为数字(NumberFormatException)
主要是第5种情况,我不知道为什么它是运行时异常,而程序员对源代码(重写代码)无能为力。您的示例非常糟糕。他们假设用户能够通过某个UI更改几乎任何内容。在
ArrayIndexOutOfBoundsException
等中肯定不是这种情况。在任何情况下,都没有明确的区别,这在很大程度上取决于程序的业务逻辑。例如,用户选择的文件不应出现FileNotFoundException
,因为您可以事先检查该文件是否存在。但是,如果您正在加载一个必须存在的文件(例如,程序的配置文件),则会出现一个未经检查的异常。谢谢Kayaman,NumberFormatException如何,我不明白为什么它是不可恢复的异常?:)不是。这是一个未经检查的例外。所有这些“可恢复”的东西只是哲学思考和思考。没有明确的逻辑,如果你用谷歌搜索一下,你应该能够找到很多关于检查与未检查争议的讨论。哦,谢谢……所以“可恢复”与否取决于每个人的思维方式和这个程序的目的……相对而言,是对的?:)确切地可恢复性(或缺乏可恢复性)唯一明显的情况是出现错误
。它们总是表示程序员不能(或不应该)做任何事情的情况。
=> This situation is recoverable or un-recoverable? Why?
=> In this situation, if user choose the another file (through UI), it is the recoverable exception?
=> This situation is recoverable or un-recoverable? Why?
=> In this situation, if user choose the another number <> 0 (through UI), it is the recoverable exception?
=> This situation is recoverable or un-recoverable? Why?
=> In this situation, if user choose the another index (through UI), it is the recoverable exception?
=> This situation is recoverable or un-recoverable? Why?
=> In this situation, if user choose the another object not null (through UI), it is the recoverable exception?
=> This situation is recoverable or un-recoverable? Why?
=> In this situation, if user choose the another string (through UI), it is the recoverable exception?