Python:在 try 块内部引发,用于突破它

问题描述 投票:0回答:1

我有一个函数需要执行两个代码块之一:

  • 代码A
  • 代码B

如果某个变量

check
为False,或者代码A失败,则需要执行代码B。代码 A 或 B 必须执行,而不是两者都执行。我写这个的方式是:

try:
    if check:
        raise TypedError('')
    # code A
except TypedError:
    # code B

我对此感到难过有两个原因:

  • TypedError 是我期望从代码 A 中得到的错误类别,但它与我的代码无关,事实上,它是我正在使用的某个包的特定错误。
  • 如果
    check
    为 True 并且代码 B 中发生错误,则从回溯看来,该错误是在处理另一个错误时发生的,这是不真实的并且可能会造成混乱。

你认为有一种更Pythonic的方式来编写同一个程序吗?

python try-catch
1个回答
0
投票

@FrankYellin 的精彩且有用的评论让我意识到有一个我以前无法想到的更好的解决方案:

if check:
    try:
        # code A
    except TypedError:
        check = False
if not check:
    # code B

我觉得这样更好,而且只多了一行。谢谢你接受我愚蠢的问题。

© www.soinside.com 2019 - 2024. All rights reserved.