Введение в язык Питон

773123a3

Исключения и классы.


Все исключения являются классами. Чтобы определить новый тип исключения, мы фактически создаём новый класс, наследующий базовому классу Exception:

>>> class MyError(Exception): ... def __init__(self, value): ... self.value = value ... def __str__(self): ... return `self.value` ... >>> try: ... raise MyError(2*2) ... except MyError, e: ... print 'My exception occurred, value:', e.value ...

My exception occurred, value: 4

>>> raise MyError, 'oops!'

Traceback (most recent call last):

File "<stdin>", line 1, in ?

__main__.MyError: 'oops!'

Обычно в классах-исключениях делают небольшие конструкторы __init__, которые инициализируют поля класса, чтобы к ним впоследствие можно было бы обратиться:

class Error(Exception): """Базовый класс для исключений в модуле.""" pass

class InputError(Error): """Ошибка ввода данных.

Поля: expression – выражение, где произошла ошибка message – объяснение ошибки """

def __init__(self, expression, message): self.expression = expression self.message = message

class TransitionError(Error): """Возникает при неверной операции

Поля: previous – состояние до начала плохой операции next – состояние после операции message – объяснение, почему такая операция недопустима """

def __init__(self, previous, next, message): self.previous = previous self.next = next self.message = message

|



Содержание раздела