例外的更多pythonic方式?

ert*_*ion 4 python django exception

我有一个方法,必须根据它们的存在返回三个对象中的一个.

我的实施

try:
    return Model.objects.get(param=param)
except Model.DoesNotExist as ex:
    # go to the next verification
    pass

try:
    return RelatedModel.objects.get(param=param).model
except RelatedMolel.DoesNotExist as ex:
    # get the default model
    pass

return Model.objects.get_default()
Run Code Online (Sandbox Code Playgroud)

所以对于python的大师的问题 - 它是一个比内部try/catch块更具pythonic实现还是?

try:
    return Model.objects.get(param=param)
except Model.DoesNotExist as ex:

    try:
        return RelatedModel.objects.get(param=param).model
    except RelatedModel.DoesNotExist as ex:

        return Model.objects.get_default()
Run Code Online (Sandbox Code Playgroud)

jon*_*rpe 6

来自Python的Zen(import this):

Flat优于嵌套.

在这种情况下,我更喜欢第一个版本.