반응형
# 예외 종류
# 파이썬 예외처리의 이해
# 예외 종류
# 문법적으로 에러가 없지만, 코드 실행(런타임)프로세스에서 발생하는 예외 처리도 중요
# linter : 코드 스타일, 문법 체크
# 1. SyntexError : 잘못된 문법
# print('Test) # '' 닫아줘야함
# if True # ':' 없음
# pass
# x=> y # 없는 문법 (>=)
# 2. NameError : 참조변수 없음
a=10
b=15
#print(c)
# 3. ZeroDivisionError : 0 나누기 에러
#print(10/0)
# 4. IndexError : 인덱스 범위 오버
x = [10,20,30]
print(x[0])
# print(x[3]) # 예외 발생
# 5. KeyError
dic = {'Name':'Kim','age':33,'city':'Seoul'}
#print(dic['hobby'])
print(dic.get('hobby')) # 없어도 에러 발생하지 않음
# 6. AttributeError : 모듈, 클래스에 있는 잘못된 속성 사용시에 예외
import time
print(time.time())
# print(time.month()) # 없는 모듈 사용시 에러
# 7. ValueError : 참조 값이 없을 때 발생
x = [1,5,9]
# x.remove(10) # 없는 값
# x.index(10) # 없는 값
# 8. FileNotFoundError
#f = open('test.txt','r') # 파일 없음 예외 발생
# 9. TypeError
x=[1,2]
y=(1,2)
z='test'
# print(x+y) # 자료형 다르면 연산 불가능
# print(x+z)
print(x+list(y)) # 형변환 후 연산
# 항상 예외가 발생하지 않을 것으로 가정하고 먼저 코딩
# 그 후 런타임 예외 발생시 예외 처리 코딩 권장(EAFP 코딩 스타일)
# try ~ except ~ else~ finally 구문
# 예외 처리 기본
# try: 예외가 발생할 가능성이 있는 코드 실행
# except : 에러명 1
# except : 에러명 2
# else : 에러가 발생하지 않았을 경우 실행
# finally : 항상 실행
# 예제1
name = ['Kim','Lee','Park']
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!')
# 예제2
try :
z = 'Jim'
x = name.index(z)
print('{} Found it! in name'.format(z,x+1))
except : # 모든 에러 캐치
print('Not Found it! - Occurred Error')
else:
print('Ok! else!')
# 예제3
try :
z = 'Jim'
x = name.index(z)
print('{} Found it! in name'.format(z,x+1))
except : # 모든 에러 캐치
print('Not Found it! - Occurred Error')
else:
print('Ok! else!')
finally:
print('finally Ok!')
# 예제 4
# 예외 처리는 하지 않지만, 무조건 수행되는 코딩 패턴
try:
print('Try')
finally :
print('Ok Finally!!')
# 예제5
# Alias 활용
try :
z = 'Jim'
x = name.index(z)
print('{} Found it! in name'.format(z,x+1))
except ValueError as l:
print(l) # 'Jim' is not in list
except IndexError:
print('Not Found it! - Occurred IndexError')
except Exception:
print('Not Found it! - Occurred Error')
else:
print('Ok! else!')
finally:
print('finally Ok!')
# 예제 6
# 예외 발생: raise
# raise 키워드로 예외 직접 발생
try:
a='Kim'
if a=='Kim':
print('Ok 허가!')
else:
raise ValueError
except ValueError:
print("문제 발생!")
except Exception as f:
print(f)
else:
print("Ok!")
반응형
'Algorithm > 자료구조, 알고리즘' 카테고리의 다른 글
[코딩 + 알고리즘 완주반] 9일차. 데이터베이스 연동 (SQLite) (0) | 2021.03.23 |
---|---|
[코딩 알고리즘 완주반] 8일차. 파이썬 외부 파일 처리 ( Excel, CSV 파일) (0) | 2021.03.22 |
[코딩 + 알고리즘 완주반] 8일차. 파일 읽기, 쓰기 (0) | 2021.03.22 |
[코딩 + 알고리즘 완주반] 7일차. 모듈, 패키지 (0) | 2021.03.21 |
[코딩 + 알고리즘 완주반] 7일차. 상속, 다중상속 (0) | 2021.03.21 |