TAException と呼ばれるカスタマイズされた例外クラスを持つ Python プログラムを作成しましたが、正常に動作します。しかし、新しい要件により、その機能を拡張する必要があります。ユーザーがプログラムの起動時に特定のフラグ (-n) を設定した場合、TAException が発生してもプログラムは実行を停止してはなりません。
以下に、私がそれを実装しようとした方法を示します。main() では、そのフラグが設定されている場合、TAException.setNoAbort() が呼び出されます。残りは自明かもしれません。要点: 明らかに機能しません。TAException が発生すると、プログラムは常に中止されます。機能しない理由はわかっていますが、別の方法で実装する方法がわかりません。これを行うエレガントな方法を教えてください。
class TAException(Exception):
_numOfException = 0 # How often has this exception been raised?
_noAbort = False # By default we abort the test run if this exception has been raised.
def __init__(self, TR_Inst, expr, msg):
'''
Parameters:
TR_Inst: Testreport instance
expr: Expression in which the error occured.
msg: Explanation for the error.
'''
if TR_Inst != None:
if TAException._noAbort is True: # If we abort the test run on the first exception being raised.
TAException._numOfException += 1 # Or else only count the exception and continue the test run.
# The status of the testreport will be set to "Failed" by TestReportgen.
else:
TR_Inst.genreport([expr, msg], False) # Generate testreport and exit.
@staticmethod
def setNoAbort():
'''
Sets TAException._noAbort to True.
'''
TAException._noAbort = True