본문 바로가기
게임 제작 관련/개발환경(프로그램)

Python 예외 상황 (try - except)

by 김바보 2022. 9. 27.

try - except : 의도하지 않은 예외 상황이 발생했을때 처리, 출력하기 위해 사용

 

 

x = int(input('나눌 숫자 입력:'))
y = 10/x
print(y)

input을 이용해 간단히 숫자를 나누는 입력문을 작성했을때

 

0으로 나눈다는 값을 입력할 경우 가장 흔한 예외 상황인 '0으로 나누기 에러(ZeroDivisionError)' 발생한다.

이때 에러 메시지가 아닌 자신이 원하는 메시지가 출력되길 원한다면

 

try:
    x = int(input('나눌 숫자 입력:'))
    y = 10/x
    print(y)
    
except:
    print('0으로 나눌 수 없음')

----------------
나눌 숫자 입력:0
0으로 나눌 수 없음

try - except를 사용해 원하는 메시지 출력이 가능하다.

 

try:
    x = int(input('3의 배수 입력: '))
    if x % 3 != 0:
        raise Exception('3의 배수가 아닙니다')
        
    print(x)
    
except Exception as e:
    print('다른 숫자를 입력하세요.', e)
    
    
----------------------
3의 배수 입력: 7
다른 숫자를 입력하세요. 3의 배수가 아닙니다

응용하자면, raise Exception을 이용해 원하는 조건에 원하는 메시지 출력이 가능하다.

다만 raise Exception은 try - except가 있어야 사용할 수 있다.

 

지금은 raise Exception에서 발생한 에러 메시지가 e로 저장되었고

except Exception as e: 구문을 통해 '다른 숫자를 입력하세요.'와 합쳐서 출력한 것이다.

 

 

만약 raise Exception을 try - except에 넣고 싶지 않다면

def error():
    x = int(input('3의 배수 입력: '))
    if x % 3 != 0:
        raise Exception('3의 배수가 아닙니다')
        
    print(x)
    
try:
    error()
except Exception as e:
    print(e)
    
---------------------
3의 배수 입력: 7
3의 배수가 아닙니다

def 함수():

를 이용해 함수를 만들었고

뒤에 try - except를 빼서 출력시켜줬다.

 

 

 

 

* 이제 막 코딩 수업을 듣기 시작하는 비전공자 문과생이 개인적으로 공부하기 위해 작성했습니다.

* 틀린 부분이 있을 수 있음.

* 교재 예제를 따왔으나 교재 제작하신 교수님이 어디서 이 코드를 가져왔는지 모름. 코드가 완벽히 일치하는 인터넷 자료가 있을 수 있음.

댓글