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

Python 我应该在哪里放置try/except块的return语句?,python,Python,我有下面的try/except块。由于except块有自己的return语句,因此在这种情况下,如果try块成功,我有3种可能的方法放置return语句。是否有相关的惯例或最佳实践 第1版: try: self.validate() self.perform_creation() except UserException as e: show_error(e.message) return super().render(request) return redi

我有下面的try/except块。由于except块有自己的
return
语句,因此在这种情况下,如果
try
块成功,我有3种可能的方法放置
return
语句。是否有相关的惯例或最佳实践

第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版:

试试看:
self.validate()
self.perform_creation()
返回重定向(self.next)#返回此处
除UserException作为e外:
显示错误(例如消息)
返回super().render(请求)
第3版:

试试看:
self.validate()
self.perform_creation()
除UserException作为e外:
显示错误(例如消息)
返回super().render(请求)
其他:
返回重定向(self.next)#返回此处

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

将不希望引发异常的任何语句放在
try
块之外。在这种情况下,
else
子句是非常多余的。这些经验法则将引导您找到解决方案。我喜欢尽可能减少分支(这通常有助于降低圈复杂度),所以我选择版本1或版本2。绝对不是第三版。分割“快乐之路”会让你更难跟随潮流。这就像听某人讲一个故事,不断延伸到不相关的细节。我想大家的共识是:不是3。然后是一堆介于1和2之间的固执己见的答案。