首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是可恢复和不可恢复的异常或错误?

什么是可恢复和不可恢复的异常或错误?
EN

Stack Overflow用户
提问于 2016-03-19 07:28:51
回答 4查看 9.6K关注 0票数 4

我试图理解错误和异常之间的区别,但是它看起来是一样的,在甲骨文官方教程上我读了这一行。

选中的异常受捕获或指定要求的制约。所有异常都是检查异常,但错误、RuntimeException及其子类指示的异常除外。

现在我觉得这是一样的。但经过更多的研究,我发现了一些理论上的不同之处。

异常:是可恢复的

错误:不可恢复。

异常示例:

代码语言:javascript
运行
复制
try{
  read file
}
catch(FileNotFoundException e){
// how I can recover here? can i create that file?
// I think we can just make log file to continue or exit.
}

错误示例:

代码语言:javascript
运行
复制
try{
      try to locate memory
}
catch(MemoryError e){   
    // I think we can just make log file to continue or exit.
}

编辑的我在问关于可恢复和不可恢复的问题。

EN

回答 4

Stack Overflow用户

发布于 2016-03-19 08:12:05

错误,正如你已经知道的,意味着你有了严重的麻烦。在catch块中,您可能可以执行类似于日志的操作,但基本上就是这样。

不可恢复的异常大多是运行时异常,如NullPointerException。它们通常是程序代码中的一些遗漏检查的结果。因此,解决方案通常是修复代码。

一个可恢复的例外是你事先知道可能发生的事情,并采取某些措施。想想一个web应用程序,它调用了一些后端服务。该服务可能可用,也可能不可用,这可能导致操作的执行失败。因此,您有一个检查过的异常,在这种情况下,很可能是您抛出的自定义异常,然后在前端代码中以这样的方式处理它:您告诉用户,对不起后端服务xy关闭了,稍后再试或联系支持。

可恢复并不意味着应用程序可以做一些事情来解决异常的原因,尽管在某些情况下这是可能的。

票数 7
EN

Stack Overflow用户

发布于 2017-06-28 09:20:17

所有继承自类异常但不是直接或间接地从类RuntimeException继承的类都被认为是检查的,exceptions.Such异常通常是由程序不控制的条件引起的。示例

  • 在文件处理中,如果文件不存在,程序将无法打开该文件。

可恢复的,因此很容易知道如果一个文件不存在,所以您不需要打开该文件,因此这是可恢复的。

RuntimeException的直接或间接子类(包java.lang)的所有异常类型都是未经检查的异常。这通常是由程序代码中的缺陷引起的。示例

  • ArrayIndexOutOfBoundsExceptions
  • ArithmeticExceptions
  • 错误

Unrecoverable使程序无法从此类错误或异常中恢复

票数 0
EN

Stack Overflow用户

发布于 2021-08-06 04:35:15

不可恢复的错误是将应用程序置于未定义状态的错误,如中断的数据库连接或关闭的端口,您可以处理该错误并继续执行,但这是没有意义的。现代语言如Rust和Go使用名称panic来表示这些性质的错误,以明确区别。最好的操作是记录错误(如果可能的话),并退出应用程序。

可恢复的错误是我们可以优雅地处理的错误,比如除以零或验证错误。这是预料中的事情,其结果行为将在语言规范中涵盖。是的,当发生可恢复的错误时,应用程序的行为是不稳定的,但是我们可以包含它或处理它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36099102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档