39 raise
이번 시간에는 예외를 직접 일으키는 방법을 알아보겠습니다.
프로그래밍을 하다 보면, 특히 다른 코드에서 쓸 함수나 모듈을 만들다 보면 예외를 직접 일으키고 싶은 때가 있습니다. 예제를 보면서 첫 번째 이유를 알아보겠습니다. 시작하기 전에 파일 이름을 raise.py로 저장합니다.
가위바위보의 승패를 판정하는 rsp 함수를 만든다고 가정하겠습니다. 변수 mine과 yours로 내가 낸 패와 상대방이 낸 패를 입력받습니다. 승패를 판정하는 코드가 있더라도 mine이나 yours에 가위바위보가 아닌 값이 들어오지 않도록 해야 합니다. 따라서 다음과 같이 받아 온 값이 올바른지 미리 검사합니다.
코드 raise.py
def rsp(mine, yours): allowed = ['가위', '바위', '보'] if mine not in allowed: # allowed 안에 없다면(잘못된 값이라면) raise ValueError # 값 오류를 발생시킵니다. if yours not in allowed: raise ValueError rsp('가위', '바') # 일부러 '바'라는 잘못된 값을 넣습니다.
실행 결과
Traceback (most recent call last):
File "raise.py", line 8, in <module>
rsp('가위', '바')
File "raise.py", line 6, in rsp
raise ValueError
ValueError