Каковы лучшие практики для создания исключений? Я только что видел это, и я не знаю, должен ли я быть в ужасе, или мне это нравится. Я несколько раз читал в книгах, что исключения никогда не должны содержать строку, потому что сами строки могут генерировать исключения. Есть ли правда в этом?
Исходя из того, что я понял из сценариев, это было сделано для того, чтобы все внутренние библиотеки Python имели общий формат сообщений об ошибках (что крайне необходимо), поэтому я могу понять, почему размещение строки сообщения об ошибке - хорошая идея. (Почти каждый метод генерирует исключения из-за крайней необходимости ни в чем недопустимом проходе).
Код, о котором идет речь, следующий:
"""
Base Exception, Error
"""
class Error(Exception):
def __init__(self, message):
self.message = message
def __str__(self):
return "[ERROR] %s\n" % str(self.message)
def log(self):
ret = "%s" % str(self.message)
if(hasattr(self, "reason")):
return "".join([ret, "\n==> %s" % str(self.reason)])
return ret
class PCSException(Error):
def __init__(self, message, reason = None):
self.message = message
self.reason = reason
def __str__(self):
ret = "[PCS_ERROR] %s\n" % str(self.message)
if(self.reason != None):
ret += "[REASON] %s\n" % str(self.reason)
return ret
Это всего лишь верхушка айсберга, но кто-нибудь может дать мне некоторое представление о том, что делает эту ужасную идею? Или, если есть гораздо лучший процесс / стиль кодирования исключений.