예외를 만드는 가장 좋은 방법은 무엇입니까? 나는 이것을 단지 보았고, 내가 소름 끼치거나 좋아할 지 모르겠습니다. 문자열 자체가 예외를 throw 할 수 있기 때문에 예외가 절대 문자열을 보유해서는 안되는 책을 여러 번 읽었습니다. 이거 진짜 진실이야?Python 예외에 대한 유용한 정보
기본적으로 필자가 이해 한 내용은 이것이 모든 내부 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
하지만, 누군가가 나에게이 끔찍한 생각하는 무슨에 몇 가지 통찰력을 제공 할 수 있습니다 :
문제의 코드는 다음과 같다? 또는 코딩 프로세스/스타일이 훨씬 더 우수합니다.
나는 프로그래머에게 최대한의 정보를 제공하기 위해 최대한의 예외 계층 구조를 갖는 것이 가장 좋은 방법이라고 생각한다. 예를 들어 (아래부터) WrongInputError -> InputError -> GeneralInputError -> NonCriticalError -> Error -> GeneralError -> BaseError -> WhyIsThisHappeningerror와 같은 것을 권장합니다. – drozzy