Exception in python : 예외처리

이형래·2021년 8월 26일
2

Python

목록 보기
5/10
post-thumbnail

Exception Handling in Python

python에서 예외처리하기!

프로그램을 작성하고 실행하다보면 많은 예외가 발생하게 된다.
이 예외를 미리 예상하고 대응하여 내 프로그램이 비정상적인 종료가 되지 않도록 대비하자.

1. try except

try:
	# 예외가 발생할 수 있는 코드.
except <Exception Type> as e: # as 뒤에 변수로 발생한 예외의 메시지를 받아올 수 있다.
	# 예외가 발생하면 대응하는 코드.
except <Another Exception Type> as e:
	# 예외가 발생하면 대응하는 코드.
	# print(e)
except Exception as e:
	# 예외가 발생하면 대응하는 코드.
# 마지막에 Exception으로 나머지 종류의 모든 excption을 받을 수 있다(권장 하지 않음).

# ex
>>> for i in range(10):
...     try:
...             print(10 / i)
...     except ZeroDivisionError:	# built-in Error
...             print("Error : Can't divided by 0")
... 
Error : Can't divided by 0
10.0
5.0
3.3333333333333335
2.5
2.0
1.6666666666666667
1.4285714285714286
1.25
1.1111111111111112

대표적인 Exception

  • IndexError : ListIndex가 범위를 넘어가는 경우. (list index out of range)
  • NameError : 용어 또는 변수가 존재하지 않는 경우.(name is not defined)
  • ZeroDivisionError : 0으로 숫자를 나누는 경우. (division by zero)
  • ValueError : 올바르지 않은 형변환시 발생하는 오류. (invalid literal for ~ )
  • FileNotFoundError : 존재하지 않는 파일을 호출하는 경우. (No such file or directory)

추가 정보 : https://docs.python.org/3/library/exceptions.html

1.1.1 try except else 구조

try:
	# 예외가 발생할 수 있는 코드.
except <Exception Type> as e:
	# 예외가 발생하면 대응하는 코드.
else:
	# 예외가 발생하지 않으면 실행하는 코드.

1.1.2 try except finally 구조

try:
	# 예외가 발생할 수 있는 코드.
except <Exception Type> as e:
	# 예외가 발생하면 대응하는 코드.
finally:
	# 예외 발생과 상관없이 실행되는 코드.

2. raise

필요에 의해 지정한 예외가 발생하도록 강제로 Exception을 발생시키는 방법.

raise <Exception Type>(Exception 정보)

# ex
if (예외를 발생시키고 싶은 조건):
	raise ValueError('예외를 발생시킨 이유')

3. assert

assert 뒤의 조건이 False 이면 예외를 발생시킨다.

assert 예외조건,'message'	# message는 생략 가능.

# ex
# 보통 이렇게 함수 제일 위에 값이 잘 들어왔는지 체크하기 위해 많이 사용함.
>>> def check_int(v):
...     assert type(v) is int,'{0} is not int type.'.format(v)
... 
>>> list_a = [1, 2, 3, 'four']
>>> 
>>> for i in list_a:
...     check_int(i)
... 
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "<stdin>", line 2, in check_int
AssertionError: four is not int type.

이 글은 네이버 부스트코스 강의 중 최성철교수님의 강의를 바탕으로 학습하며 작성했습니다.

참고.
https://docs.python.org/ko/3/tutorial/errors.html
https://wikidocs.net/21050
https://korbillgates.tistory.com/96

profile
머신러닝을 공부하고 있습니다. 특히 비전 분야에 관심이 많습니다.

0개의 댓글