본문 바로가기

Python/Python 기초

[Python] try-except 예외처리

예외(exception) 런타임 오류 (runtime error)

프로그램 실행중에 발생하는 오류를 말한다.

파이썬은이러한 예외상황과 오류에 대한 처리를 위해 try except 구문을 사용한다.


try-except 사용

 

try:
   a, b = map(int, input().split())
except:
   break
print(a,b)

try: 구문에서는 에러가 발생할 여지가 있는 문장을 작성하고

except: 구문에서는 에러가 발생하였을 시 실행시킬 문장을 작성한다.

즉, 아무런 에러가 발생하지 않는 경우에는 except를 지나쳐 print(a,b) 코드를 실행시키는 것이다.

 


try except else finally

 

try:
   에러가 발생할수도 있는 구문
except:
   에러가 발생했을 때 실행할 구문
else:
   에러가 발생하지 않았을 때 실행하는 구문
finally:
   어떠한 상황에도 무조건 실행시키는 구문

try except 예시

try:
   a = int(input())
   b = int(input())
   div = a / b
   print('a 나누기 b 값 == %d' % div)
except:
   print('예외발생')

정상적인 결과

6
2
a 나누기 b 값 == 3.0

예외상황 1 [ b의 값이 0 ]

1
0
예외발생

예외상황 2 [ 문자열 입력 ] 

two
예외발생

발생된 예외상황 확인

try except 구문의 경우 except에 사용자가 설정한 내용 외에는 정확한 에러의 종류에 대한 설명이 없다.

이러한 문제를 해결하기위해 아래의 구문을 추가해 준다.

except Exception as e:
   print('예외발생', e)

즉, 아래와 같이 except 구문을 설정하면 된다.

try:
   a = int(input())
   b = int(input())
   div = a / b
   print('a 나누기 b 값 == %d' % div)
except Exception as e:
   print('예외발생', e)

 

출력값을 한번 비교해보자.

1
0
예외 발생 division by zero

0 으로 나굿셈을 시도하려는 에러를 설명한다.

two
예외 발생 invalid literal for int() with base 10: 'two'

잘못된 형식의 변수값 입력을 의미한다.


else 구문의 활용

앞선 설명에서 else: 의 경우 구문에 오류가 없을 시 실행하는 구문이라고 말했다.

사실 else 구문은 try 구문 안에 넣어도 크게 상관이 없다고 하니 알아만 두자.

try:
   a = int(input())
   b = int(input())
   div = a / b
except Exception as e:
   print('예외발생', e)
else:
   print('a 나누기 b 값 == %d' % div)

이러한 형식으로 구문에 오류가 없을 시 except 구문을 지나쳐 else 구문을 실행시키는 것이다.

 


Finally 구문의 활용

finally 구문은 앞선 구문들에 대해서 예외가 발생하거나 그렇지 않거나 상관 없이 무조건 실행을 하는 구문이다.

try:
   a = int(input())
   b = int(input())
   div = a / b
except Exception as e:
   print('예외발생', e)
else:
   print('a 나누기 b 값 == %d' % div)
finally:
   print('나눗셈 종료')

이러한 경우 어떠한 오류가 있거나 오류가 없더라도 finally 구문은 실행이 된다.

1
0
예외 발생 division by zero
나눗셈 종료
two
예외 발생 invalid literal for int() with base 10: 'two'
나눗셈 종료
6
2
a 나누기 b 값 == 3.0
나눗셈 종료

 

'Python > Python 기초' 카테고리의 다른 글

[Python] 파이썬 while 반복문  (0) 2021.08.21
[Python] 반복문  (0) 2021.06.02
[Python] 조건문  (0) 2021.06.02
[Python] 기본 입출력  (0) 2021.06.02
[Python] 사전 자료형  (0) 2021.06.02