Need tekkinud erindid on võimalik "kinni püüda" ja kasutada neid programmi suunamiseks "haruteele":
>>>
def jaga(jagatav, jagaja):...
"Jagab jagatava jagajaga"...
try:...
return jagatav/jagaja...
except ZeroDivisionError:...
print "Nulliga ei saa jagada!"...
return None...
>>>
jaga(6,2) 3>>>
jaga(6,0) Nulliga ei saa jagada!
Ülaltoodud programm püüab kinni ainult nulliga jagamise vea, kui üritada jagajaks või jagatavaks sokutada stringi, siis lõpeatab funktsioon töö veateatega:
>>>
jaga(6,'kassikangas')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 4, in jaga
TypeError: unsupported operand type(s) for /: 'int' and 'str'
Selle vastu aitab see, kui defineerida ka tüübi vea püüdmise erind:
>>>
def jaga(jagatav, jagaja):...
"Jagab jagatava jagajaga"...
try:...
return jagatav/jagaja...
except ZeroDivisionError:...
print "Nulliga ei saa jagada!"...
return None...
except TypeError:...
print "Jagada saab ainult arve!"...
return None
Erindite defineerimisel tuleb lähtuda tervest mõistusest ja otstarbekusest - eelkõige kinni püüda need vead, mis muidu oleksid raskesti avastatavad, või need, mis on kerged tekkima (näiteks kasutaja sisestab vale tüüpi andmed)