Это может быть не очень хороший ответ, кто-то еще сможет помочь больше.
Try-Exception:
Эта тема основана на мнении.Если они говорят, что им не нравится, что вы используете try exception
, как это, то они, вероятно, не верят в «Лучше просить прощения, чем разрешения» .
Как говорится, бросать Exception
неплохо;ОДНАКО поймать генерала Exception
считается плохим.Если часть программного обеспечения не работает должным образом (то есть каким-то неизвестным образом), вы хотите, чтобы она не работала, поэтому вам нужно только поймать специфичный Exception
, который вы хотите поймать.
ВыВы можете найти здесь полный список жизнеспособных исключений, просто выберите подходящее и используйте его: Исключения программирования Python
Если вы не хотите перехватывать одно из существующих исключений, вы можетевсегда создавайте свои собственные:
class MyAPIException(Exception):
def __init___(self, val):
self.val = val
Exception.__init__(self, "APIException with with arguments {0}".format(self.val))
def do_stuff(a,b,c):
raise MyAPIException({
'a' : a,
'b' : b,
'c' : c,
})
try:
do_stuff(1, 2, 3)
except MyAPIException as e:
print("API Exception:", e)
Альтернатива:
Другим способом помочь с DRY может быть использование списка для совершения вызовов.
def check1():
# List of functions you want to call in order
calls = [check1a, check1b, check1c]
for index, call in enumerate(calls):
# If it is the first function we will not pass any data
status, data = call() if index == 0 else call(data)
if not status:
return False, data
return status, data
Эта реализация также позволяет легко реализовать его как генератор, если вы хотите вернуть результат каждого вызова функции.