Erinditöötlus
Eelmine
Järgmine

Erinditöötlus

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)

Eelmine
Järgmine
Esileht