Python学習:try_except
2044 ワード
Python内のエラーキャプチャモードはtry_Exceptモード、tryの役割は次のコードブロックで発生する可能性のあるエラーを試してみることです.tryの中の文にエラーが発生した場合、excepet文にキャプチャされるべきですが、tryで発生したエラーのタイプはexcept文がエラーのタイプまたはそのサブクラスをキャプチャしなければならないことを意味します.そうしないとキャプチャできません.これにより、スタックに沿ってエラータイプがアップロードされ、キャプチャまたは解釈器によってキャプチャされるまでアップロードされます.このとき、解釈器はtracebackを呼び出して、最も原始的なエラー発生場所が発見されるまでエラーの経路を追跡する.
一般的にエラーが発生する、キャプチャされていない、またはキャプチャされていない、放出されるとコードの実行が停止するが、finallyを使用してコードの実行を継続することができ、これはfinallyの部分が必ず実行することを意味する.
またraiseの役割は、このエラーをスタックの上位レベルに投げ出すことであり、raiseでエラータイプを変換することもできる.
例を挙げると、このコードの中でfooは最初にエラーをキャプチャし、それがValueErrorであることを知って、それからこのエラーを投げ出し、barにキャプチャされ、barがこのエラーをキャプチャすると処理するが、この処理はエラー情報を印刷しただけで、エラーを投げ出し続け、このエラーは解釈器にキャプチャされ、逆にエラーの状況を追跡する.この一連の過程は、従業員がミスを犯し、それから自分で処理し(exceptの中で)、仕事を続けるか、それともこのエラーが処理できないと思っているか、raiseというエラーが必要で、後続の仕事は実行されないと理解することができる.あるいは、エラーが自分で処理できるかどうかにかかわらず、後で必ず実行しなければならない仕事があります.上司も同様にこのように処理します.彼がエラーをアップロードし続けると、後の作業は実行されません.そうしないと、エラーがキャプチャされていない(上司がこのエラーをキャプチャしていない)か、アップロードされている(上司が処理できない)場合は、作業が継続されます.エラーはceoにアップロードされ続け(上位層がアップロードされている可能性もあるし、誰もエラーを処理していない可能性もあるし、自分が最終的に露出している可能性もある)、このときすべてのエラー伝達状況(traceback)を調べることができます.
一般的にエラーが発生する、キャプチャされていない、またはキャプチャされていない、放出されるとコードの実行が停止するが、finallyを使用してコードの実行を継続することができ、これはfinallyの部分が必ず実行することを意味する.
またraiseの役割は、このエラーをスタックの上位レベルに投げ出すことであり、raiseでエラータイプを変換することもできる.
例を挙げると、このコードの中でfooは最初にエラーをキャプチャし、それがValueErrorであることを知って、それからこのエラーを投げ出し、barにキャプチャされ、barがこのエラーをキャプチャすると処理するが、この処理はエラー情報を印刷しただけで、エラーを投げ出し続け、このエラーは解釈器にキャプチャされ、逆にエラーの状況を追跡する.この一連の過程は、従業員がミスを犯し、それから自分で処理し(exceptの中で)、仕事を続けるか、それともこのエラーが処理できないと思っているか、raiseというエラーが必要で、後続の仕事は実行されないと理解することができる.あるいは、エラーが自分で処理できるかどうかにかかわらず、後で必ず実行しなければならない仕事があります.上司も同様にこのように処理します.彼がエラーをアップロードし続けると、後の作業は実行されません.そうしないと、エラーがキャプチャされていない(上司がこのエラーをキャプチャしていない)か、アップロードされている(上司が処理できない)場合は、作業が継続されます.エラーはceoにアップロードされ続け(上位層がアップロードされている可能性もあるし、誰もエラーを処理していない可能性もあるし、自分が最終的に露出している可能性もある)、このときすべてのエラー伝達状況(traceback)を調べることができます.
def foo(s):
n = int(s)
if n == 0:
raise ValueError('invalid value: {}'.format(s))
return 10 / n
def bar():
try:
foo('0')
except ValueError as e:
print('ValueError!')
raise