执行无论异常类型如何

时间:2016-11-29 22:11:23

标签: python exception exception-handling python-extensions

我希望我的程序退出,而不管发生的异常类型如何。但是,根据异常的类型,我想记录不同的错误消息。如何通过减少代码重复来实现这一目标?以下是我目前使用的代码:

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()

3 个答案:

答案 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')