我应该在哪里放置try / except块的返回语句?

时间:2019-06-17 12:11:15

标签: python

我有以下try / except块。由于except块具有自己的return语句,因此在这种情况下,我可以通过3种可能的方式在return块成功的情况下放置try语句。是否有惯例或最佳做法?

版本1:

try:
    self.validate()
    self.perform_creation()

except UserException as e:
    show_error(e.message)
    return super().render(request)

return redirect(self.next)  # Return here

版本2:

try:
    self.validate()
    self.perform_creation()
    return redirect(self.next)  # Return here

except UserException as e:
    show_error(e.message)
    return super().render(request)

版本3:

try:
    self.validate()
    self.perform_creation()

except UserException as e:
    show_error(e.message)
    return super().render(request)

else:
    return redirect(self.next)  # Return here

1 个答案:

答案 0 :(得分:1)

您应该在de try / catch块之外放置不应引发异常的语句。因此,在您的情况下,第2版是最佳解决方案。