[Django]-Try/except database query in django

5👍

You can nest try/except:

        try:
            email_list = EmailList.objects.get(domain=(cd['email'].split('@')[1]))
        except:
            try:
                email_list = EmailList.objects.get(email=cd['email'])
            except:
                ...do something else

If you are just using these try/except to do a simple test, it’s worthwhile to wrap the try/except:

def get_or_none(model, **kwargs):
    try:
        return model.objects.get(**kwargs)
    except model.DoesNotExist:
        return None

Which gives you slightly more readable code:

if get_or_none(EmailList, domain='domain.com'):
    ...do something
elif get_or_none(EmailList, domain='domain.com'):
    ...do something
else:
    ...do something

As Ignacio mentioned in his answer you should always be explicit and catch only the exceptions you intend.

8👍

Nested try/except blocks. And don’t use a bare except; catch only the exceptions you can handle.

Leave a comment