当前位置: 首页 > 面试题库 >

什么时候需要在try..except中添加`else`子句?

苗盛
2023-03-14
问题内容

当我在Python中使用异常处理编写代码时,我可以编写如下代码:

try:
    some_code_that_can_cause_an_exception()
except:
    some_code_to_handle_exceptions()
else:
    code_that_needs_to_run_when_there_are_no_exceptions()

这与以下内容有何不同:

try:
    some_code_that_can_cause_an_exception()
except:
    some_code_to_handle_exceptions()

code_that_needs_to_run_when_there_are_no_exceptions()

在两种情况下code_that_needs_to_run_when_there_are_no_exceptions()都将在没有例外的情况下执行。有什么不同?


问题答案:

实际上,在第二个片段中,最后一行总是执行。

你可能是说

try:
    some_code_that_can_cause_an_exception()
    code_that_needs_to_run_when_there_are_no_exceptions()
except:
    some_code_to_handle_exceptions()

我相信 else如果可以使代码更具可读性,则可以使用该版本。 else如果您不想从中捕获异常,则可以使用变体code_that_needs_to_run_when_there_are_no_exceptions



 类似资料:
  • 在原本的 结构的基础上, Python 异常处理机制还提供了一个 else 块,也就是原有 try except 语句的基础上再添加一个 else 块,即 结构。 使用 else 包裹的代码,只有当 try 块没有捕获到任何异常时,才会得到执行;反之,如果 try 块捕获到异常,即便调用对应的 except 处理完异常,else 块中的代码也不会得到执行。 举个例子: 可以看到,在原有 try e

  • 我正在学习Python并偶然发现了一个我无法理解的概念:构造中的可选块。 我感到困惑的是,如果try子句没有在try构造中引发异常,为什么必须执行代码--为什么不让它在相同的缩进级别上跟随try/except?我认为这将简化异常处理的选项。或者另一种询问方法是块中的代码会做什么,如果它只是跟随try语句,而不是它,那么它就不会做什么。也许我漏掉了什么,请开导我。 这个问题和这个问题有点相似,但我找

  • 问题内容: 我对JAX-WS进行了概述,并注意到了(和)的一些引用。 在什么情况下需要?(我认为JSR 109服务器?!) 问题答案: 是使用SUN的参考实现将Web服务作为标准存档部署在非Java EE5 Servlet容器上时所需的专有部署描述符。 Sun的RI 用作servlet上下文事件的侦听器和调度程序servlet。两者都必须在中声明。然后需要该文件为定义Web服务端点,以使其知道必须

  • 问题内容: 我使用类只有很短的时间,编写方法时,我使所有变量都引用了self,例如self.foo。 但是,我在浏览《 wxPython in Action》 一书时发现,“ self”并没有一直使用。例如: 下面的一个确实使用“自我”。 如果我没记错的话,“自我”是指该类的特定实例,那么什么时候没有必要?有一般的经验法则吗? 问题答案: 您用于引用当前实例的属性。 您用于引用父类的方法。 如果仅

  • 谷歌正在通过电子邮件通知Android位置权限的更改: 我们将于2016年10月15日进行更改,这将影响针对API版本21(Android 5.0、Lollipop)或更高版本的应用程序,这些应用程序使用ACCESS_FINE_LOCATION但没有明确具有“android.hardware.location.gps”用途功能。展望未来,这些应用程序将可安装在没有GPS硬件的设备上。在大多数情况下

  • 能否详细的说一下为什么这里else语句不写就会存在非零返回的问题吗? 题目: 7-23 词组缩写 定义:一个词组中每个单词的首字母的大写组合称为该词组的缩写。 WHO就是World Health Organization的缩写。 输入测试数据占一行,有一个词组,每个词组由一个或多个单词组成;每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成; 单词长度不超过10,由一个或多个空格分

  • 问题内容: 我如何使用AtomicBoolean?该类的作用是什么? 问题答案: 当有多个线程需要检查并更改布尔值时。例如: 这不是线程安全的。您可以使用以下方法修复它: