Ответ 1
Вы можете сделать ререйз исключение в качестве первой строки вашего блока except, который будет вести себя так же, как и без try/except.
try:
print 'foo'
# A lot more code...
print 'bar'
except:
raise # was: pass
Скажем, у меня есть следующий код:
try: print 'foo' # A lot more code... print 'bar' except: pass
Как я в целях тестирования отключить временную инструкцию try-statement?
Вы не можете просто прокомментировать строки try
и except
, так как отступ все равно будет отключен.
Нет ли более простого способа, чем это?
#try: print 'foo' # A lot more code... print 'bar' #except: # pass
Вы можете сделать ререйз исключение в качестве первой строки вашего блока except, который будет вести себя так же, как и без try/except.
try:
print 'foo'
# A lot more code...
print 'bar'
except:
raise # was: pass
Поверните его в оператор 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]
Piggy - отключение ответа 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")
Сделайте ваш except
только поймать что-то, что блок try
не будет бросать:
class FakeError:
pass
try:
# code
except FakeError: # OldError:
# catch
Не уверен, что это хорошая идея, но она работает!