try ブロックのコードに問題があります。簡単にするために、これは私のコードです:
try:
code a
code b #if b fails, it should ignore, and go to c.
code c #if c fails, go to d
code d
except:
pass
このようなことは可能ですか?
try ブロックのコードに問題があります。簡単にするために、これは私のコードです:
try:
code a
code b #if b fails, it should ignore, and go to c.
code c #if c fails, go to d
code d
except:
pass
このようなことは可能ですか?
この個別の try
ブロックを作成する必要があります。
try:
code a
except ExplicitException:
pass
try:
code b
except ExplicitException:
try:
code c
except ExplicitException:
try:
code d
except ExplicitException:
pass
これは、失敗した場合にcode c
のみ実行することを前提としています。code b
code c
関係なく実行する必要がある場合は、try
ブロックを次々に配置する必要があります。
try:
code a
except ExplicitException:
pass
try:
code b
except ExplicitException:
pass
try:
code c
except ExplicitException:
pass
try:
code d
except ExplicitException:
pass
すべての例外をやみくもに無視することは決して良い習慣except ExplicitException
ではないため、ここで使用しています。を無視することになりますが、それ以外の場合も、何らかの再レイズやそれらを処理するための意識的な理由なしに、通常は無視したり傍受したりしたくないものです。MemoryError
KeyboardInterrupt
SystemExit
ステートメントを抽出 (リファクタリング) します。and
そして、との魔法を使って、or
短絡するタイミングを決定します。
def a():
try: # a code
except: pass # or raise
else: return True
def b():
try: # b code
except: pass # or raise
else: return True
def c():
try: # c code
except: pass # or raise
else: return True
def d():
try: # d code
except: pass # or raise
else: return True
def main():
try:
a() and b() or c() or d()
except:
pass