从try跳转到使用python除外

2024-10-01 15:34:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我在寻找打破尝试进入例外的方法 (此示例在换行符中有一个syntaxerror)

fool():
   return 0

 try:
     var = fool()
     if var == 0:
       break  #from here jump to except 
 except:
     fool2()

我的另一个想法是:

^{pr2}$

另一个更像Python的解决方案?在


Tags: to方法from示例returnifherevar
3条回答
try:
     var = fool()
     if var == 0:
       raise Exception
 except:
     fool2()

可以引发一般异常:

try:
    var = fool()
    if var == 0:
        raise Exception
except:
    fool2()

但这并不是一个好的编程:您应该始终清楚地知道要捕捉哪些异常。在

Zen of Python声明“错误永远不应该悄无声息地传递”。在

因此,这可能是一个更好的实现:

^{pr2}$

这将阻止您捕获不需要的异常(例如IndexError、ZeroDivisionError…)

但是,我认为最好的模式是分别称呼傻瓜2:

def fool():
    return 0


try:
    var = fool()
    if var == 0: #Here I manage controlled events
        fool2()
except: #Here I manage uncontrolled events
    fool2()

这种方法更好,因为它隔离了可能引发异常的指令:

def fool():
    return 0


try:
    var = fool()
except: #Here I manage uncontrolled events
    fool2()
else:  #Here I manage controlled events
    if var == 0:
        fool2()

不能从try子句跳转到except,除非像其他答案一样引发异常。但这很奇怪,你不应该这么做。相反,重新考虑你的控制流。你想达到什么目的?有一种自然的Python结构可以让您这样做,try/except可能不是这样。在

相关问题 更多 >

    热门问题