1

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
4

1 に答える 1

4

パラメータ -n を使用する場合、プログラムは例外を発生させず、代わりに警告を使用する必要があります (プログラムは停止しません)。ここで警告に関する詳細情報を見つけることができます: http://docs.python.org/2/library/warnings.html#module-warnings

于 2013-02-15T10:24:41.733 に答える