프로그래밍 언어/Python

try ~ except ~ else, finally

ruby-jieun 2023. 1. 9. 23:37

 

 

try ~ except ~ else

 


 

 

try ~ except ~ else

예외가 발생하지 않은 경우 실행하는 구문이다.

 

 else는 except 바로 다음에 와야 하며 except를 생략할 수 없다.

try:
    실행할 코드
except:
    예외가 발생했을 때 처리하는 코드
else:
    예외가 발생하지 않았을 때 실행할 코드

10을 입력된 숫자로 나누고 예외가 발생하지 않으면 계산 결과를 출력

try:
    x = int(input('나눌 숫자를 입력하세요: '))
    y = 10 / x
except ZeroDivisionError:    # 숫자를 0으로 나눠서 에러가 발생했을 때 실행됨
    print('숫자를 0으로 나눌 수 없습니다.')
else:                        # try의 코드에서 예외가 발생하지 않았을 때 실행됨
    print(y)

2를 입력하면

나눌 숫자를 입력하세요: 2 (입력)
5.0

2를 입력했으므로 y = 10 / x에서 예외가 발생하지 않는다.

따라서 else의 코드가 실행되고 계산 결과가 출력된다.

0을 입력해서 예외가 발생하면 except의 코드만 실행되고 else의 코드는 실행되지 않는다.

나눌 숫자를 입력하세요: 0 (입력)
숫자를 0으로 나눌 수 없습니다.

 

 

finally

 


 

 

예외 발생과 상관없이 항상 실행한다.

finally는 except와 else를 생략할 수 있다.

try:
    실행할 코드
except:
    예외가 발생했을 때 처리하는 코드
else:
    예외가 발생하지 않았을 때 실행할 코드
finally:
    예외 발생 여부와 상관없이 항상 실행할 코드

try의 코드가 끝나면 항상 '코드 실행이 끝났습니다.'를 출력

try:
    x = int(input('나눌 숫자를 입력하세요: '))
    y = 10 / x
except ZeroDivisionError:    # 숫자를 0으로 나눠서 에러가 발생했을 때 실행됨
    print('숫자를 0으로 나눌 수 없습니다.')
else:                        # try의 코드에서 예외가 발생하지 않았을 때 실행됨
    print(y)
finally:                     # 예외 발생 여부와 상관없이 항상 실행됨
    print('코드 실행이 끝났습니다.')

2를 입력

나눌 숫자를 입력하세요: 2 (입력)
5.0
코드 실행이 끝났습니다.

2를 입력하여 예외가 발생하지 않았으므로 계산 결과가 출력되고, '코드 실행이 끝났습니다.'도 출력된다.

 

0을 입력

나눌 숫자를 입력하세요: 0 (입력)
숫자를 0으로 나눌 수 없습니다.
코드 실행이 끝났습니다.

숫자를 0으로 나눠서 예외가 발생했지만 finally는 항상 실행되므로 '코드 실행이 끝났습니다.'가 출력된다.