Customizing exceptions in python. How to log errors?
我在我的python代码中定制异常。 我已将异常类继承到其他类,现在将一些自定义错误定义为从我的自定义异常类派生的类,如下所示:
1 2 3 | class DataCollectorError(Exception): pass class ParamNullError(DataCollectorError) : pass class ParamInvalidTypeError(DataCollectorError) : pass |
我在我的python函数中提出这些异常,如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | def READ_METER_DATA (regIndex, numRegisters, slaveUnit): 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" if(isinstance(regIndex, int) == False): raise ParamInvalidTypeError,"register index passed is not int" if(isinstance(numRegisters, int) == False): raise ParamInvalidTypeError,"number of registers passed is not int" |
现在我想使用记录器将错误消息记录到日志文件中,但不知道在哪里做。
但后来我不知道在哪里以及如何获取该错误消息来记录它们。
只需使用标准日志记录模块; 它将使用开箱即用的异常消息记录您的异常。
当您的应用程序捕获异常时,使用
1 2 3 4 5 6 | log = logging.getLogger('some-identifier') try: # except DataCollectorError: log.exception('An error occurred') |
默认情况下,异常有一个
您的代码的一些样式反馈:
-
不要测试
== False 。 相反,使用not :1if not isinstance(regIndex, int): -
提出例外情况:
1raise ParamNullError("register index is null")而不是
raise class, message 样式,以便更容易转移到Python 3。