Добавление данных в исключение в Python

1

Я пытаюсь создать исключение, которое содержит типичную строку и дополнительный фрагмент данных:

class MyException(RuntimeError):
    def __init__(self,numb):
        self.numb = numb

try:
    raise MyException("My bad", 3)
except MyException as me:
    print(me)

Когда я запускаю вышеупомянутое, я получаю очевидную жалобу, что у меня есть только два аргумента в __init__ но я пропустил три. Я не знаю, как добавить типичную строку в мое исключение и добавить данные.

Теги:
exception

2 ответа

3
Лучший ответ

Вы можете передать первый аргумент arg (arg1) в родительский конструктор исключений, а затем сделать то, что вы хотите, со вторым аргументом.

class MyException(RuntimeError):
    def __init__(self, arg1, arg2):
        super().__init__(arg1)
        print("Second argument is " + arg2)

Примечание - если используется Python 2, вызов super() заменяется на super(MyException, self)

  • 0
    Он показывает именно то, что он хочет сделать со вторым аргументом: сохранить его для последующего использования. (В примере это будет доступно как me.numb .)
  • 0
    Правда - дай мне обновить мое описание ... спасибо
0

Обновленный код, основанный на ответе выше, выглядит следующим образом:

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
  • 0
    Вы могли бы поместить это в свой первоначальный вопрос под разделителем, как: --------- ОБНОВЛЕНИЕ --------- PS - рад, что это работает, я на самом деле не проверял это и полагал, что это опечатка
  • 0
    @AdamHughes Я задавался вопросом об этом, но мне казалось, что это смутит людей, когда они увидят ответ на вопрос. Я представлял, что они перестанут читать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню