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

Python try-else

尚楚
2023-03-14
问题内容

语句的可选else子句的预期用途是try什么?


问题答案:

else如果执行没有超出try-如果没有异常,则执行块中的语句。老实说,我从来没有发现需要。

但是,“处理异常”指出:

使用else子句比向try子句添加其他代码更好,因为它避免了意外捕获try … except语句保护的代码未引发的异常。

所以,如果你有一个方法可以,例如,抛出IOError了,你想抓住它会引发异常,但有你想,如果第一个操作成功做其它的事情,你 不要
想抓住从一个IOError该操作,您可能会这样写:

try:
    operation_that_can_throw_ioerror()
except IOError:
    handle_the_exception_somehow()
else:
    # we don't want to catch the IOError if it's raised
    another_operation_that_can_throw_ioerror()
finally:
    something_we_always_need_to_do()

如果仅放在another_operation_that_can_throw_ioerror()之后operation_that_can_throw_ioerrorexcept则将捕获第二个调用的错误。而且,如果将其放在整个代码try块之后,它将始终运行,直到finally。将else让您确保

  1. 只有在没有异常的情况下,第二个操作才会运行
  2. 它在代码finally块之前运行,并且
  3. IOError它筹集到的任何钱都没有被抓住


 类似资料:
  • 问题内容: 我已经读过(例如,从Martin Fowler那里),我们应该在OOP的(短)方法中使用保护子句而不是单返回。我还读过(从我不记得的地方)应尽可能避免使用else子句。 但是我的同事(我在一个只有3个人的小团队中工作)迫使我不要在一个方法中使用多个返回值,而要尽可能使用else子句,即使else块中只有一个注释行。 这使我很难遵循它们的编码风格,因为例如,我无法在一个屏幕上查看方法的所

  • 问题内容: 以下三个功能中哪个更有效? 请以可接受的具体逻辑答复。 问题答案: 前者是更有效时,是。两者何时不相同。与的比较只是两个32位整数的比较,这是非常快速的运算。抛出异常的代价很高,因为应该创建新对象并且应该填充堆栈跟踪。 三进制运算符与语句完全一样有效,因为两者都被转换为相同的字节码。

  • 问题内容: 我有下面的简单代码,我试图将其转换为功能样式 是否可以轻松地用流替换此循环?我看到的唯一选择是使用两个不同的过滤条件在流上迭代两次。 问题答案: 听起来您可以只使用以下条件: 简短但完整的示例,将短字符串映射为小写,将长字符串映射为大写:

  • 问题内容: 我有一个试图在Selenium IDE中单击的复选框-但前提是它尚未处于活动状态。 我正在使用Selenium IDE创建测试,并使用htmlsuite运行测试-有人知道我可以在其中使用“ if”吗? 问题答案: 您必须从官方页面下载Selenium IDE的插件(一直下去)。 我发现的最有用的链接是此链接,因为其中有一个完整的示例:http : //selenium.10932.n7

  • 问题内容: 使用以下Java代码段: 我想知道的是编译器如何处理这个问题。即使编译器将其硬编码为true,但为了不必执行检查而完全删除该语句,这是否合乎逻辑呢?特别是在Eclipse中,上面的代码如何解释? 或者在以下情况下如何: 在这种情况下,编译器删除该语句是否合乎逻辑?因为在运行时,该语句不可访问。 问题答案: Java中禁止使用无法访问的语句,并且这些语句必须触发编译错误。JLS定义了什么

  • 问题内容: 我想减少大型遗留Java代码库中违反声纳的次数,看来“快速获胜”是将所有这些条件语句更新为大括号。这似乎是一件容易的事,我不明白为什么它不容易自动化。 有人知道这样的工具可以执行批量操作吗?还是在我花时间自己写东西之前,为什么要做这样的事情可能不是一个好主意?如果我要自己写一个,那么最好的工具是什么?理想情况下,它是Java语言感知的,这样我就不必处理格式化极端情况等。 规则是不可协商

  • 问题内容: 该方法: 可以等效地写成: 以我的经验,第二种形式更常见,尤其是在更复杂的方法(可能存在多个此类出口点)中,“掷”和“返回”也是如此。然而,第一种形式可以使代码的条件结构更加明确。有没有什么理由比另一个更喜欢? 问题答案: 以我的经验,这取决于代码。如果我“防备”某些事情,我会这样做: 重点很明确:如果该语句为假,则我不希望该函数继续。 另一方面,有些函数具有多个选项,在这种情况下,我

  • 问题内容: 一个快速的JSTL问题。我通常在jsp页面中使用scriptlet,但是由于页面中的某些其他原因而发生冲突。我了解您可以使用JSTL做类似的事情,尽管我并不熟悉。这是我将为此使用Java进行编码的内容: 那么可以将其转换和翻译以与JSTL一起使用吗? 在此先感谢您,如果您有任何疑问,请告诉我。 问题答案: 您可以为此使用。该可以通过lowercasing的做到两边对称。 或者,当您使用