Я пытаюсь создать исключение, которое содержит типичную строку и дополнительный фрагмент данных:
class MyException(RuntimeError):
def __init__(self,numb):
self.numb = numb
try:
raise MyException("My bad", 3)
except MyException as me:
print(me)
Когда я запускаю вышеупомянутое, я получаю очевидную жалобу, что у меня есть только два аргумента в __init__
но я пропустил три. Я не знаю, как добавить типичную строку в мое исключение и добавить данные.
Вы можете передать первый аргумент arg (arg1
) в родительский конструктор исключений, а затем сделать то, что вы хотите, со вторым аргументом.
class MyException(RuntimeError):
def __init__(self, arg1, arg2):
super().__init__(arg1)
print("Second argument is " + arg2)
Примечание - если используется Python 2, вызов super()
заменяется на super(MyException, self)
Обновленный код, основанный на ответе выше, выглядит следующим образом:
class MyException(RuntimeError):
def __init__(self,message,numb):
super().__init__(message)
self.numb = numb
try:
raise MyException("My bad", 3)
except MyException as me:
print(me)
print(me.numb)
Выводит
My bad
3
me.numb
.)