Как сделать правильный объект ошибки? - PullRequest
1 голос
/ 15 мая 2011

Я работаю над созданием небольшого модуля Python. Я хочу, чтобы этот модуль возвращал ошибки, если они есть. Какой правильный или стандартный способ создания объектов ошибок в Python?

Редактировать: Я не совсем уверен, как создавать свои собственные ошибки, конечно, потому что я не уверен, как работают ошибки (я просто знаю, как их перехватить в try: ... except: ...). Так что сейчас я сделал черновик сообщений об ошибках, ошибки являются строками. Когда что-то происходит неожиданно, я печатаю и return None. Я думаю, что это не правильный путь:)

Пример:

    ...
    self.IsNotStringError = "Args was not a string."
    ...

def myMethod(self, args)
    """ Args must be a string. """
    if not isinstance(args, str):
       print IsNotStringError
       return None
    else:
        do things...

Редактировать (бис): Читая ответы ниже, я заглянул в документацию по Python. Существует учебное пособие по созданию пользовательских исключений .

Пример из документации:

class MyError(Exception):
    def __init__(self, value):
    self.value = value
    def __str__(self):
        return repr(self.value)

Ответы [ 2 ]

5 голосов
/ 15 мая 2011

Вы можете создать свой собственный класс исключений, унаследовав Exception:

class YourError( Exception ): pass

Далее просто поднимите его, когда вам нужно:

raise YourError("error message")
2 голосов
/ 15 мая 2011

Вопрос всегда таков:

  • возвращение какого-либо объекта ошибки или
  • выдача исключения

Все зависит от конкретного варианта использования и того, чтопытаемся выполнить.

Явное исключение часто является лучшим выбором.Создание собственного исключения путем наследования от Exception дает вам полный контроль.Передача произвольных значений в конструктор вашего собственного исключения проста.Поймать исключение на стороне вызывающего и проанализировать сохраненные данные исключения также тривиально.

Вы должны быть более конкретны, если ожидаете большего, чем мета-ответ.

...