Joh*_*now 5 python try-catch break
我搜索中断 try 并进入 except 的方法(此示例在中断行中有一个语法错误)
def fool():
return 0
try:
var = fool()
if var == 0:
pass # from here jump to except
except:
fool2()
Run Code Online (Sandbox Code Playgroud)
我想到的另一种方式是:
var = fool()
if var == 0:
fool2()
Run Code Online (Sandbox Code Playgroud)
另一个更Pythonic的解决方案?
您可以引发通用异常:
try:
var = fool()
if var == 0:
raise Exception
except:
fool2()
Run Code Online (Sandbox Code Playgroud)
但这不是好的编程:您应该始终清楚要捕获哪些异常。
Python 的禅宗指出“错误永远不应该悄无声息地过去”。
所以,这可能是一个更好的实现:
class FoolException(Exception):
pass
def fool():
if everything_ok:
return 0
raise FoolException()
try:
var = fool()
if var == 0:
raise FoolException()
except FoolException:
fool2()
Run Code Online (Sandbox Code Playgroud)
这将防止您捕获不需要的异常(例如 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()
Run Code Online (Sandbox Code Playgroud)
这种方式更好,因为它隔离了可能引发异常的指令:
def fool():
return 0
try:
var = fool()
except: #Here I manage uncontrolled events
fool2()
else: #Here I manage controlled events
if var == 0:
fool2()
Run Code Online (Sandbox Code Playgroud)