首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时使用try finally和not try catch finally

何时使用try finally和not try catch finally
EN

Stack Overflow用户
提问于 2013-04-04 02:47:22
回答 5查看 4.4K关注 0票数 2

使用Try Catch Finally块的最佳实践是什么?您是否倾向于只使用try finally块而不使用try catch块?我一直认为try catch finally是使用的最佳实践。但是,在我使用的部分代码中,我看到了这样的代码:

尝试{ doSomething();}最后{ doSomethingElse();}

因为他们没有捕捉到异常,所以我真的很难调试代码。对我来说,不使用catch和only并不是一个很好的实践,但我可能错了。

据我所知,这并不是一个好的做法。基本上,我们没有使用try catch的用途。我也找到了类似的questions

我的问题是:“您是否同意以下假设:最佳实践是一起尝试捕获最终结果,而不是最终尝试。”如果您不同意,请给我一个例子,说明何时使用try finally而不是try catch,以及为什么您认为try finally比try catch更好?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-04 02:50:49

我不同意,如果你不能对抛出的异常做任何事情,但是你的调用者层次结构中更高层次的东西可以,那么使用finally来清理你的资源,让调用者在异常被抛出后处理清理工作。

票数 6
EN

Stack Overflow用户

发布于 2013-04-04 02:54:26

finally构造的目的是提供将始终执行的代码,即使抛出异常也是如此。

try / finally (no catch)允许您编写代码,即使try块中的代码抛出运行时异常,这些代码也能保证执行。

在使用可能引发运行时异常但不引发检查异常的代码的情况下,这很好用。Spring DAO支持就是一个例子;它将IOExceptions包装在运行时异常中。

票数 1
EN

Stack Overflow用户

发布于 2013-04-04 02:54:57

通常,try-finally用于确保执行某些代码,而不管异常是否发生。Catch块通常会丢失,因为try块中的代码不会抛出任何可以捕获的检查异常。

例如:

代码语言:javascript
复制
try  {

        if(str.length() > 0) { // If str is null, it can throw NullPointer and hence code below it wont execute
            // some code
        }

    }finally {
        // Will be performed even if any unchecked exception is thrown
        // Must contain code which has to be performed at any cost like releasing occupied memory
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15795521

复制
相关文章

相似问题

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