私はこれのようなことをしてばかげていますか?私は基本的にtry catch
ブロックの目的を理解していないように感じる。ループ内の複数のtry catchブロック
デーモンで自動パイロットで実行したいスクリプトがありますが、時にはリスト内の一部のリソースが完全に割り当てられているかどうかをチェックすることがあります。リソースが完全に割り当てられている場合、1つのことを続けることはできませんが、他にもできることがあります。 APIから何かを呼び出すため、APIによってスローされたException
は非常に一般的です(ちょうどAPI_Exception
のように)。この状況で複数のtry
ブロックが無意味なのですか?
主な問題は、break
は私が、私はちょうどこれら二つのブロックを組み合わせて、一度ExceptionA
をキャッチする必要があります。この場合、ループ
for:
try:
stuff()
except ExceptionA:
handle()
break
except ExceptionB:
report()
sys.exit()
try:
other_stuff()
except ExceptionA:
handle_in_a_different_way()
break
except ExceptionC:
report()
sys.exit()
other_code_that_should_execute_if_there_is_a_break()
から抜け出すことはできませんということでしょうか? ExceptionA
に解析可能なパラメータが簡単にない可能性があります。
for:
try:
stuff()
other_stuff()
except ExceptionA:
if ExceptionA has param
handle()
elif ExceptionA has other param
handle_in_a_different_way()
except ExceptionB:
report()
sys.exit()
except ExceptionC:
report()
sys.exit()
後者の場合、 'except(ExceptionB、ExceptionC):'をグループ化することができます。 –