次のコードがあるとします。
試す: 'foo'を出力します #もっとたくさんのコード... 'バー'を印刷 それ外: パス
テスト目的で、一時的なtry-statementを無効にするにはどうすればよいですか?
インデントがまだオフになっているため、コメントtry
や行をコメントすることはできません。except
これより簡単な方法はありませんか?
#試す: 'foo'を出力します #もっとたくさんのコード... 'バー'を印刷 #それ外: # パス
次のコードがあるとします。
試す: 'foo'を出力します #もっとたくさんのコード... 'バー'を印刷 それ外: パス
テスト目的で、一時的なtry-statementを無効にするにはどうすればよいですか?
インデントがまだオフになっているため、コメントtry
や行をコメントすることはできません。except
これより簡単な方法はありませんか?
#試す: 'foo'を出力します #もっとたくさんのコード... 'バー'を印刷 #それ外: # パス
例外を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:
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
これが良いアイデアかどうかは実際にはわかりませんが、機能します。
それを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]