728x90
반응형
예외 종류
### 예외 종류
- 분법적으로 에러가 없지만, 코드 실행(런타임)프로세스에서 발생하는 예외 처리도 중요하다.
- linter : 코드 스타일, 문법 체크
- SyntaxError : 잘못된 분법
- print('test)
- NameError :참조변수 없음
- a = 10
- b = 15
- print(c)
- ZeroDivisionError : 0 나누기 에러
- print(10/0)
- IndexError : 인덱스 범위 오버
- x = [10,20,30]
- print(x[0])
- print(x[3]) --이게 에러 인덱스3은 없다. 2까지만 존재
- KeyError
- dic = {'name':'kim','Age':33}
- print(dic['hobby']) -- 존재하지 않는다. hobby는
- AttributeError : 모듈, 클래스에 있는 잘못된 속성 사용시에 예외
- import time
- print(time.time())
- print(time.month()) - 존재 x
- ValueError : 참조 값이 없을 때 발생
- x[1,5,9]
- x.remove(10)
- x.index(10) - 참조값 없음
- FileNotFoundError
- f = open('test.txt','r') # 예외 발생 # test.txt가 현재 경로에 없기 때문
- TypeError
- x = [1,2] # list
- y = (1,2) # tuple
- print(x+y) # list와 tuple은 합칠 수 없다.
- print(x+list(y)) # 형 변환시 가능
- 항상 예외가 발생하지 않을 것으로 가정하고 코딩
- 그 후 런타임 예외 발생시 예외 처리 코딩 권장(EAFP 코딩 스타일)
예외 처리 기본
## 예외 처리 기본
- try : 에러가 발생할 가능성이 있는 코드 실행
- except : 에러명1
- except : 에러명2
- else : 에러가 발생하지 않았을 경우 실행
- finally : 항상 실행
예제1
# 예제1
name = ['Kim', 'Lee', 'Cho']
try:
z = 'Kim'
x = name.index(z) # Kim찾기
print(' {} Found it! in name'.format(z, x+1))
except ValueError:
print('Not found it! - Occurred ValueError!')
예제2
# 예제2
# except
name = ['Kim', 'Lee', 'Cho']
try:
z = 'Han'
x = name.index(z) # Kim찾기
print(' {} Found it! in name'.format(z, x+1))
except ValueError:
print('Not found it! - Occurred ValueError!')
else:
print('Ok! elsae!')
예제3
# 예제3
# else
name = ['Kim', 'Lee', 'Cho']
try:
z = 'Kim'
x = name.index(z) # Kim찾기
print(' {} Found it! in name'.format(z, x+1))
except ValueError:
print('Not found it! - Occurred ValueError!')
else:
print('Ok! else!') # 성공 시
예제4
# 예제4
# finally : 반드시 실행
name = ['Kim', 'Lee', 'Cho']
try:
z = 'Kim'
x = name.index(z) # Kim찾기
print(' {} Found it! in name'.format(z, x+1))
except ValueError:
print('Not found it! - Occurred ValueError!')
else:
print('Ok! else!') # 성공 시
finally:
print('finally ok!')
예제5
# 예제 5
# 일반적으로 계층적 except
name = ['Kim', 'Lee', 'Cho']
try:
z = 'Kim'
x = name.index(z) # Kim찾기
print(' {} Found it! in name'.format(z, x+1))
except ValueError:
print('Not found it! - Occurred ValueError!')
except IndexError:
print('Not found it! - Occurred IndexError!')
except Exception:
print('Not found it! - Occurred Error!')
else:
print('Ok! else!') # 성공 시
finally:
print('finally ok!')
# except 계층적으로 처리하게 만들기
# 마지막에 Exception으로 하는것이 좋다.
예제6
# 예제6
# 예외발생 : raise
# raise 키워드로 예외 직접 발생
try :
a = 'Han'
if a =='Kim':
print('Ok 허가')
else:
raise ValueError
except ValueError:
print('문제 발생')
except Exception as f:
print(f)
else:
print('Ok!')
728x90
반응형
최근댓글