Во-первых, Python выдвигает для вас стандартные исключения.
Лучше попросить прощения, чем попросить разрешения
Просто попробуйте выполнить операцию и позвольте Python вызвать исключение. Не заключайте в скобки все с if would_not_work(): raise Exception
. Никогда не стоит писать. Python уже делает это в всех случаях.
Если вы считаете, что вам нужно вызвать стандартное исключение, вы, вероятно, пишете слишком много кода.
Возможно, вам придется поднять ValueError
.
def someFunction( arg1 ):
if arg1 <= 0.0:
raise ValueError( "Guess Again." )
Время от времени вам может понадобиться поднять TypeError
, но это редко.
def someFunctionWithConstraints( arg1 ):
if isinstance(arg1,float):
raise TypeError( "Can't work with float and can't convert to int, either" )
etc.
Во-вторых, вы почти всегда хотите создавать свои собственные, уникальные исключения.
class MyException( Exception ):
pass
Это все, что нужно для создания чего-то особенного и уникального для вашего приложения.