By " современный Python» я имею в виду что-то, что будет работать в Python 2.5, но будет «правильным» для способа ведения дел в Python 2.6 и Python 3.*. Под «пользовательским» я подразумеваю объект Exception, который может включать дополнительные данные о причине ошибки: строку, а также, возможно, какой-либо другой произвольный объект, относящийся к исключению.
Меня сбило с толку следующее предупреждение об устаревании Python 2.6.2:
Код: Выделить всё
>>> class MyError(Exception):
... def __init__(self, message):
... self.message = message
...
>>> MyError("foo")
_sandbox.py:3: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
Я также смутно осознаю, что у Exception есть некоторые магические аргументы параметров, но я никогда не знал, как их использовать. Я также не уверен, что это правильный способ действий в будущем; во многих обсуждениях, которые я нашел в Интернете, говорилось, что они пытались покончить с аргументами в Python 3.
Обновление: в двух ответах предлагалось переопределить __init__ и __str__/__unicode__/__repr__. Кажется, что нужно много печатать, это необходимо?
Подробнее здесь: https://stackoverflow.com/questions/131 ... ern-python