首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >try-finally和try-catch之间的区别

try-finally和try-catch之间的区别
EN

Stack Overflow用户
提问于 2010-05-18 14:15:14
回答 7查看 110.2K关注 0票数 99

两者的区别是什么

代码语言:javascript
运行
复制
try {
    fooBar();
} finally {
    barFoo();
}

代码语言:javascript
运行
复制
try {
  fooBar();
} catch(Throwable throwable) {
    barFoo(throwable); // Does something with throwable, logs it, or handles it.
}

我更喜欢第二个版本,因为它让我可以访问Throwable。这两种变体之间是否存在逻辑上的差异或首选约定?

另外,有没有办法访问finally子句中的异常?

EN

回答 7

Stack Overflow用户

发布于 2010-05-18 14:17:43

try用于运行可能引发异常的方法

catch用于“捕捉”并停止该异常

finally用于捕获或未捕获该异常所需的任何清理工作

代码语言:javascript
运行
复制
try{
    myObject.riskyMethod(); // run a method that may throw an exception
}
catch(Exception ex){
    myLogger.log(ex.Message); // "catch" stop that exception
}
finally{
    myObject = null; // clean up needed from that exception being caught
}
票数 5
EN

Stack Overflow用户

发布于 2016-02-12 00:01:58

Finally和catch块有很大的不同:

在catch块中,您可以响应抛出的异常。仅当存在未处理的异常,并且类型与catch块的参数中指定的类型匹配或为该异常的子类时,才执行此块。最后,无论是否引发异常,都会在try和catch块之后执行。

票数 3
EN

Stack Overflow用户

发布于 2015-10-14 16:26:24

在我的研究中,Finally块总是被执行的,它主要是“用于关闭任何打开的连接”,并销毁一些不必要的运行。

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

https://stackoverflow.com/questions/2854910

复制
相关文章

相似问题

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