Questions tagged «finally»

与try-catch构造中的finally块有关的问题。


6
“最终”是否总是在Python中执行?
对于Python中任何可能的try-finally块,是否保证finally将始终执行该块? 例如,假设我在一个except街区中返回: try: 1/0 except ZeroDivisionError: return finally: print("Does this code run?") 或者,也许我重新提出一个Exception: try: 1/0 except ZeroDivisionError: raise finally: print("What about this code?") 测试表明finally上述示例确实可以执行,但我想我还没有想到其他场景。 在任何情况下,某个finally块可能无法在Python中执行?



15
在finally块中引发异常
有没有一种优雅的方法来处理finally块中引发的异常? 例如: try { // Use the resource. } catch( Exception ex ) { // Problem with the resource. } finally { try{ resource.close(); } catch( Exception ex ) { // Could not close the resource? } } 如何避免在try/ catch在finally块?

4
在try-except块中使用python“ with”语句
这是将python“ with”语句与try-except块结合使用的正确方法吗? try: with open("file", "r") as f: line = f.readline() except IOError: <whatever> 如果是这样,请考虑使用旧的处理方式: try: f = open("file", "r") line = f.readline() except IOError: <whatever> finally: f.close() 这里的“ with”语句的主要好处是我们可以摆脱三行代码吗?对于这个用例,这似乎并不吸引我(尽管我知道“ with”语句还有其他用途)。 编辑:以上两个代码块的功能是否相同? EDIT2:前几个答案大体上谈及使用“ with”的好处,但是这里似乎没有什么好处。我们已经(或者应该已经)明确地调用f.close()多年了。我想一个好处是草率的编码器将从使用“ with”中受益。

11
为什么我们使用finally块?
据我所知,以下两个代码段将达到相同的目的。为什么要finally块呢? 代码A: try { /* Some code */ } catch { /* Exception handling code */ } finally { /* Cleanup code */ } 代码B: try { /* Some code */ } catch { /* Exception handling code */ } // Cleanup code
91 java  .net  finally 

4
在Angular.js中实现承诺时如何始终运行一些代码
在我的Angular.js应用程序中,我正在运行一些异步操作。在开始之前,我先使用模式div覆盖应用程序,然后在操作完成后,无论操作是否成功,都需要删除div。 目前我有这个: LoadingOverlay.start(); Auth.initialize().then(function() { LoadingOverlay.stop(); }, function() { LoadingOverlay.stop(); // Code needs to be duplicated here }) 它运作良好,但是我更喜欢这样的伪代码: LoadingOverlay.start(); Auth.initialize().finally(function() { // *pseudo-code* - some function that is always executed on both failure and success. LoadingOverlay.stop(); }) 我认为这是一个很普遍的问题,所以我想可以做到,但是在文档中找不到任何东西。知道是否可以做到吗?


4
在try catch / finally语句中finally的意义是什么
多年来,我已经在多种语言中使用了try-catch / except-finally变体,今天有人问我,最后的意义是什么,我无法回答。 基本上,您为什么要在最后放入一条语句,而不是只在整个try-catch块之后放一条语句?换句话说,以下代码块之间是有区别的: try{ //a} catch {//b} finally {//c} try{//a} catch{//b} //c 编辑:人们 ,我知道最终会做些什么,我已经使用了很长时间了,但是我的问题是在上面的示例中,插入//c最后似乎是多余的,不是吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.