Лично мне нравится утверждение assert.
Но в этом контексте я предпочитаю Try-Catch для сложных задач и if-else для более простых задач.
If-else (s) не читаются и не поддерживаются в тех случаях, когда их много, особенно для сложных задач. Вот почему try-catch приходит на помощь. Предполагая, что данные введены правильно, давайте обработаем их. Если в некоторых строках данный ввод оказался неверным, просто перейдите к блоку catch и вернете некоторое значение по умолчанию.
Утверждается, что try-catch медленнее. Ну, это правда. Но насколько медленнее? 0,1 мс? 1 мс? Я пожертвую этими миллисекундами ради удобочитаемости и удобства обслуживания.
В конце концов, в программировании существуют предварительные условия для каждой функции / процедуры. Мы все знаем, что означает предварительное условие. Лучший способ (мое личное мнение) - утверждать, что все параметры соответствуют всем предварительным условиям. Таким образом, мы можем предположить, что данный ввод всегда корректен, поскольку помощники на другом этаже уже гарантируют, что.