我希望我的程序退出,而不管发生的异常类型如何。但是,根据异常的类型,我想记录不同的错误消息。如何通过减少代码重复来实现这一目标?以下是我目前使用的代码:
try:
<code>
except Exception1:
self.logger.exception('Error message 1')
self.logger.error('Aborting')
sys.exit()
except Exception2:
self.logger.exception('Error message 2')
self.logger.error('Aborting')
sys.exit()
except Exception:
self.logger.exception('Unexpected error')
self.logger.error('Aborting')
sys.exit()
答案 0 :(得分:2)
try:
<code>
err_msg = ""
except Exception1:
err_msg = 'Error message 1'
except Exception2:
err_msg = 'Error message 2'
except Exception:
err_msg = 'Unexpected error'
if err_msg != "":
self.logger.exception(err_msg)
self.logger.error('Aborting')
sys.exit()
答案 1 :(得分:2)
这个怎么样?
try:
<code>
except Exception as e:
errMsg = ''
if isinstance(e, Exception1):
errMsg = 'Error message 1'
elif isinstance(e, Exception2):
errMsg = 'Error message 2'
else:
errMsg = 'Unexpected error'
self.logger.exception(errMsg)
self.logger.error('Aborting')
sys.exit()
答案 2 :(得分:1)
您可以定义如下函数:
def exit_with_message(self, message):
self.logger.exception(message)
self.logger.error('Aborting')
sys.exit()
然后对于每个异常,使用您喜欢的消息调用该函数:
except Exception1:
self.exit_with_message('Error message 1')
except Exception2:
self.exit_with_message('Error message 2')
except Exception:
self.exit_with_message('Unexpected error')