Как уже отмечали другие, исключение выведет вас из метода. Вы не должны стыдиться или смущаться из-за исключений; исключение указывает на ошибку , но это не обязательно то же самое, что ошибка .
Например, скажем, я пишу факториальную функцию. Факториал не определен для отрицательных чисел, поэтому я мог бы сделать это:
def factorial(n):
if n < 0:
raise ValueError
if n == 0:
return 1
return n*factorial(n-1)
Я бы тогда искал исключение:
n = raw_input('Enter a number.')
try:
print factorial(n)
except ValueError:
print 'You entered a negative number.'
Я могу сделать исключение более информативным, чем ValueError, определив мое собственное:
class NegativeInputError(Exception):
pass
# in the function:
if n < 0:
raise NegativeInputError
НТН!