Если можно написать без try, надо писать без try, разве не так?
ну это два разных подхода: "лучше просить прощения, чем разрешения" или "смотри под ноги".
Если у меня ситуация, когда какого-то элмента нет в базе - скорее исключение, чем правило, то нафига мне усложять код проверками? Вон, в джанге есть get_object_or_404
, но нет get_object_or_none
.
А вот если такое развитие событий вполе корректный сценарий, то да, if\else.