28.01.2015 Views

Tutorial Python - Starship

Tutorial Python - Starship

Tutorial Python - Starship

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

class MyError(Exception):<br />

... def __init__(self, value):<br />

... self.value = value<br />

... def __str__(self):<br />

... return ‘self.value‘<br />

...<br />

>>> try:<br />

... raise MyError(2*2)<br />

... except MyError, e:<br />

... print ’My exception occurred, value:’, e.value<br />

...<br />

My exception occurred, value: 4<br />

>>> raise MyError, ’oops!’<br />

Traceback (most recent call last):<br />

File "", line 1, in <br />

__main__.MyError: ’oops!’<br />

Clasele de excepţii pot fi proiectate ca oricare alta clasă, dar in mod uzual ele sunt simple, deseori oferind numai<br />

un număr de atribute, ce permit să informeze asupra erorii ce a fost tratată. Când se implementează un modul, care<br />

poate genera un număr distinct de erori, se obişnuieşte să se creeze o clasa de bază a excepţiilor definite de acest<br />

modul şi subclase care să creeze clase specifice pentru diferite condiţii de eroare :<br />

class Error(Exception):<br />

"""Base class for exceptions in this module."""<br />

pass<br />

class InputError(Error):<br />

"""Excetie generata pentru eroare de intrare.<br />

Atribute:<br />

expression -- expresia de intrare in care apare eroarea<br />

message -- explicarea erorii<br />

"""<br />

def __init__(self, expression, message):<br />

self.expression = expression<br />

self.message = message<br />

class TransitionError(Error):<br />

"""Generata cand o operatie asteapta o modificare<br />

de stare care nu este permisa<br />

Attributes:<br />

previous -- starea la inceputul tranzitiei<br />

next -- noua stare care este de asteptat sa apara<br />

message -- explicatie privind imposibilitatea tranzitiei<br />

"""<br />

def __init__(self, previous, next, message):<br />

self.previous = previous<br />

self.next = next<br />

self.message = message<br />

Multe excepţii sunt definite cu nume care se termina în “Error,” similar cu denumirea excepţiilor standard.<br />

Multe module îşi definesc propriile excepţii pentru a raporta erorile ce pot apărea în funcţiile definite de ele. Mai<br />

multe informaţii despre clase veţi găsi în capitolul dedicat acestora.<br />

8.5. Excepţii definite de utilizator 55

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!