Python コードで例外をカスタマイズしています。例外クラスを他に継承し、次のようにカスタム例外クラスから派生したクラスとしていくつかのカスタム エラーを定義しています。
class DataCollectorError(Exception): pass
class ParamNullError(DataCollectorError) : pass
class ParamInvalidTypeError(DataCollectorError) : pass
次のようなPython関数でこれらの例外を発生させています。
def READ_METER_DATA (regIndex, numRegisters, slaveUnit):
try:
if not regIndex:
raise ParamNullError, "register index is null"
if not numRegisters:
raise ParamNullError, "number of registers should not be null"
if not slaveUnit:
raise ParamNullError, "Meter Id should not be null"
次のようなログエラー:
except DataCollectorError as d:
lgr.error('DataCollector Error(READ_METER_DATA): '+d.args[0])
print 'DataCollector Error:(READ_METER_DATA)', d.args[0]
except:
lgr.error('Unexpected Error: ', sys.exc_info())
print 'Unexpected Error: ', sys.exc_info()
pass
しかし、ユニットテストスクリプトがそれを知る前に例外が発生した場合、bczがcatchブロックによってキャッチされているかどうかは不明であるため、これはユニットテストスクリプトの目的を無効にします。だから私はこれらのエラーを基本クラス自体に記録したかった-
Class ParamNullError(DataCollectorError):
<----here----------->
pass
例外の発生中に渡された文字列を取得する方法を教えてもらえますか?