【问题标题】:Python instructions outside Try: Except:Try 之外的 Python 指令:除了:
【发布时间】:2017-08-09 22:21:07
【问题描述】:

我在 Try/Except 块内有一行,但是当出现异常时,正在执行该块外的另一行。我在用手机,所以我只输入几行

try:
    total=total+int(number)
except:
    print('Bad input')
count = count + 1

当我输入一个数字时,计数会按预期递增。如果输入了一个字符,则会捕获异常,但计数仍会增加。如果出现异常,我认为只有 try/except 块中的行会被重复。

【问题讨论】:

  • Try-except 语句不会自动重复任何内容。如果你有一个 while 循环围绕这个或其他东西,你的 while 循环将重复整个循环体。

标签: python try-catch


【解决方案1】:

如果您只想在引发异常的情况下增加count,则需要使用try/except 语句的else 子句。 From the documentation section 8.3 Handling Exceptions:

try ... except 语句有一个可选的 else 子句,当它出现时,它必须跟在所有 except 子句之后。如果 try 子句没有引发异常,则它对于必须执行的代码很有用。

try:
    total += int(number)
except ValueError:
    print('Bad input')
else:
    count += 1

正如您从上面看到的,我更改了您的裸异常语句以捕获特定的异常类型ValueError,因为如果它无法将其参数转换为int,那么int 将会引发。如果您想捕获不同的异常,请更改ValueError,但不要使用裸露的except 子句,因为它可以掩盖重要的异常。

正如 cmets 中所说,try/except 语句不会多次执行它的主体。如果你想要这种行为,你需要一个循环。

【讨论】:

  • 谢谢。我错误地认为 try/except 本身就像一个循环。菜鸟失误。这包含在一个while循环中,但我不想在手机上输入它。我不知道 Else 选项,谢谢。当我输入我的代码时,我看到我的原始帖子格式不正确。输入代码和保持缩进的正确程序是什么?
  • @Ali 突出显示您希望缩进的所有代码。然后按编辑标题中的{}按钮,或使用快捷键ctrl+k
【解决方案2】:

当您输入字符并引发异常时。无论如何,count = count + 1 行仍然会被执行。因为count = count + 1 不在else: 之下,所以计数仍然会增加。 另外,请意识到 try-except 语句不会重复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2017-03-31
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多