Когда обработка исключений более предпочтительна, чем проверка условий? Есть много ситуаций, когда я могу выбрать один или другой.
Например, это суммирующая функция, которая использует настраиваемое исключение:
# module mylibrary
class WrongSummand(Exception):
pass
def sum_(a, b):
""" returns the sum of two summands of the same type """
if type(a) != type(b):
raise WrongSummand("given arguments are not of the same type")
return a + b
# module application using mylibrary
from mylibrary import sum_, WrongSummand
try:
print sum_("A", 5)
except WrongSummand:
print "wrong arguments"
И это та же самая функция, которая позволяет избежать использования исключений
# module mylibrary
def sum_(a, b):
""" returns the sum of two summands if they are both of the same type """
if type(a) == type(b):
return a + b
# module application using mylibrary
from mylibrary import sum_
c = sum_("A", 5)
if c is not None:
print c
else:
print "wrong arguments"
Я думаю, что использование условий всегда более читаемо и управляемо. Или я ошибаюсь? Каковы правильные случаи для определения API, которые вызывают исключения и почему?