만약 아래와 같이 예외 처리를 만든다고 해봅시다.
value = '가'
try:
if value not in ['가위', '바위', '보']:
raise ValueError
except ValueError:
print("에러가 발생했습니다.")
ValueError
에러는 굉장히 흔한 에러입니다.
혹시 try
안의 코드 중에 다른 부분에서 ValueError
가 발생한다면 위의 코드로는 어느 곳에서 에러가 발생했는지 알 수가 없습니다.
에러도 하나의 클래스
입니다.
따라서 에러 유형을 클래스로 정의해서 사용할 수 있습니다.
에러의 최상위 클래스는 Exception
입니다.
따라서 UnexpectedRSPValue
라는 사용자 정의 에러 클래스를 만들고 최상위 클래스인 Exception
을 상속 받겠습니다.
class UnexpectedRSPValue(Exception):
'''예외 클래스'''
value = '가'
try:
if value not in ['가위', '바위', '보']:
raise UnexpectedRSPValue()
except UnexpectedRSPValue:
print("에러가 발생했습니다.")
여러 에러 클래스를 만들고 여러 번의 except
를 통해 예외 처리를 한 번에 수행할 수 있습니다.
class BadUserName(Exception):
'''[에러] 이름으로 사용할 수 없는 입력입니다.'''
class PasswordNotMatched(Exception):
'''[에러] 입력한 패스워드가 서로 일치하지 않습니다.'''
def sign_up():
'''회원가입 함수'''
try:
sign_up()
except BadUserName:
print("이름으로 사용할 수 없는 입력입니다.")
except PasswordNotMatched:
print("입력한 패스워드가 서로 일치하지 않습니다.")