Try/except или if использовать для обработки ошибок?
Эксепшены придуманы чтобы сказать программисту "Что то пошло не так. Ситуация исключительная. Справляйся сам". В вашем случае же None это валидный ответ. Следовательно лучше обрабатывать его If.
Что еще хуже ловить TypeError или AttributeError поможет проморгать еще кучу ошибок помимо той о какой вы знаете и готовы смириться.
Справедливости  ради должен заметить что частенько исключения используются для управления ходом программы. Например в raise Http404 в django. Но это не ваш случай.
if a != NoneВ питоне проверку на None нужно делать через is/is notif a is not None:
Конкретно в подобной задаче можно сделать так, чтобы не было трехэтажных блоков if/try