- SyntaxError, TypeError, NameError, IndexError, VaLueError, KeyError....
- 문법적으로는 예외가 없지만, 코드 실행 프로세스(단계)발생하는 예외도 중요
- 에외처리 시 주의 사항
- 예외는 반드시 처리
- 로그는 반드시 남긴다.
- 예외는 던져진다.
- 예외 무시
예외처리 종류
SyntaxError
# SyntaxError : 문법 오류
# print('error)
# print('error'))
# if Ture
# pass
NameError
# NameError : 참조 없음
# a= 10
# b= 15
# print(c)
ZeroDivisionError
# ZeroDivisionError
# print(100 / 0)
IndexError
# Index Error
# x = [50, 70, 90]
# print(x[1])
# print(x[4])
# print(x.pop())
# print(x.pop())
# print(x.pop())
# print(x.pop())
KeyError
# KeyEroor
# dic = {'name': 'Lee', 'Age': 41, 'City': 'Busan'}
# print(dic['hobby'])
# print(dic.get['hobby'])
AttributeError
# AttributeError : 모듈, 클래스에 있는 잘못된 속성 사용 예외
# import time
# print(time.time2())
Value Error
# Value Error
# x = [10, 50, 90]
# x.remove(50)
# print(x)
# x.remove(200)
FileNotFoundError
# FileNotFoundError
# f = open('test.txt')
TypeError
# TypeError : 자료형에 맞지 않는 연산을 수행 할 경우
x = [1,2]
y = (1,2)
z = 'test'
# print(x + y)
# print(x + z)
# print(y + z)
print(x + list(y)) # 형 변환 후 사용 가능
print(x + list(z)) # 형 변환 후 사용 가능
예외 처리 기본
- try : 예러가 발생 할 가능성이 있는 코드 실행
- except TypeError: 여러개 가능
- except 예러명2:
- else : try 블록의 에러가 없을 경우 실행
- finally : 항상 실행
예제 1 : ValueError를 사용해서 정확한 예외를 입력
name = ['kim', 'Lee', 'Park']
# 예제1
try:
z = 'kim'
x = name.index(z)
print('{} Found it ! {} in name '.format(z, x+1))
except ValueError:
print('Not Found it! - Occurred ValueError!')
else:
print('Ok! else.')
print()
예제 2 : Exception을 사용해서 파이썬 내에서 오류를 찾아주는 역활
try:
z = 'kim'
x = name.index(z)
print('{} Found it ! {} in name '.format(z, x+1))
except Exception:
print('Not Found it! - Occurred ValueError!')
else:
print('Ok! else.')
print()
예제 3 : Exception as e: 을 사용해서 특정 예외 오류를 찾아주는 역활
try:
z = 'kim'
x = name.index(z)
print('{} Found it ! {} in name '.format(z, x+1))
except Exception as e:
print(e)
print('Not Found it! - Occurred ValueError!')
else:
print('Ok! else.')
finally:
print('Ok! finally!')
print()
예제 4 : raise를 이용해서 직접 예외를 발생 시키는 역활
try:
a= 'Park'
if a == 'Kim':
print('OK! Pass')
else:
raise ValueError
except ValueError:
print('Occurred! Exception!')
else:
print('OK! else!')