假设我有以下代码:
尝试: 打印“富” # 更多代码... 打印“酒吧” 除了: 经过
出于测试目的,我将如何临时禁用 try-statement?
你不能只注释掉try
和except
行,因为缩进仍然是关闭的。
没有比这更简单的方法了吗?
#尝试: 打印“富” # 更多代码... 打印“酒吧” #除了: # 经过
假设我有以下代码:
尝试: 打印“富” # 更多代码... 打印“酒吧” 除了: 经过
出于测试目的,我将如何临时禁用 try-statement?
你不能只注释掉try
和except
行,因为缩进仍然是关闭的。
没有比这更简单的方法了吗?
#尝试: 打印“富” # 更多代码... 打印“酒吧” #除了: # 经过
您可以将异常重新引发为 except 块的第一行,它的行为就像没有 try/except 一样。
try:
print 'foo'
# A lot more code...
print 'bar'
except:
raise # was: pass
背靠 velotron 的回答,我喜欢做这样的事情的想法:
try:
print 'foo'
# A lot more code...
print 'bar'
except:
if settings.DEBUG: # Use some boolean to represent dev state, such as DEBUG in Django
raise # Raise the error
# Otherwise, handle and move on.
# Typically I want to log it rather than just pass.
logger.exception("Something went wrong")
把它变成一个if True
语句,分支except
“注释掉”子句else
(永远不会执行):
if True: # try:
# try suite statements
else: # except:
# except suite statements
是可选的else:
,您也可以只注释掉整个except:
套件,但是通过使用,else:
您可以使整个except:
套件缩进和取消注释。
所以:
try:
print 'foo'
# A lot more code...
print 'bar'
except SomeException as se:
print 'Uhoh, got SomeException:', se.args[0]
变成:
if True: # try:
print 'foo'
# A lot more code...
print 'bar'
else: # except SomeException as se:
print 'Uhoh, got SomeException:', se.args[0]
让你except
只捕获try
块不会抛出的东西:
class FakeError:
pass
try:
# code
except FakeError: # OldError:
# catch
实际上不确定这是否是一个好主意,但它确实有效!