파이썬, 사용자 정의 예외 만드는 예제

 

글. 수알치 오상문 

 

사용자 예외는 Exception 클래스를 상속받아서 만든다.

 

# 입력한 점수가 범위를 벗어날 때 발생 시킬 사용자 정의 예외 ScoreRangeError
class ScoreRangeError(Exception):  
    def __init__(self):
        super().__init__('점수 범위(0~100)에 맞지 않습니다.')

# 점수를 입력받을 때 예외처리를 하는 함수 예  
def get_score():
    try:
        score = int(input('점수(0~100): '))
        if score > 100 or score < 0:                        
            raise ScoreRangeError  # ScoreRangeError 예외 발생
    except ScoreRangeError as e:
        print('Error:', e)
        score = None
    except Exception as e:
        print('Error:', e)
        score = None
    finally:
        return score
  
s = get_score()

if s is not None:
    print('입력한 점수:', s)
else:
    print('입력한 점수는 비정상입니다.')

[실행 결과]

점수(0~100): 100
입력한 점수: 100

 

점수(0~100): -1
Error: 점수 범위 0~100을 벗어났습니다.
입력한 점수는 비정상입니다.

 


[참고] 아무 것도 구현하지 않은 사용자 정의 예외와 강제 예외 발생 

# 예외에 대해 아무 것도 구현하지 않은 사용자 정의 예외 ScoreRange2Error

class ScoreRange2Error(Exception):  
    pass  

# 이런 예외를 raise로 발생시킬 때는 에러 메시지를 추가하자.
raise ScoreRange2Error('점수 범위(0~100)에 맞지 않습니다.')

반응형

+ Recent posts