# chapter07-01 # 파이썬예외처리의 이해 # 예외종류 # syntax, type, name, index, value, key..error # 문법적으로는 틀리지 않았지만, 코드실행 프로세스(단계) 발생하는 예외도 중요 # 1. 예외는 반드시 처리 # 2. 로그는 반드시 남긴다. # 3. 예외는 던져진다. # 4. 예외 무시. # syntaxError / 문법 오류. # print('error) / print('error')) # nameError / 참조 없음 # a=10 # b=15 # pring(c) # ZeroDivisionError # print(100/0) #IndexError x=[50,70,90] print(x[1]) # print(x[4]) # KeyError dic={'name' :'Lee' , 'age' : 41, 'city':'busan'} # print(dic['hobby']) # 예외가 없는 것을 가정하고 프로그램을 작성 > 런타임 예외 발생 시 예외 처리 권장(EAFP) # AttributeError : 모듈, 클래스에 있는 잘못된 속성 사용 예외 import time # print(time.time2()) time2는 없다 # ValueError x = [10,50,90] x.remove(50) print(x) # x.remove(200) # FileNotFoundError # f = open('text.txt') 파일 없음 에러. # TypeError : 자료형에 맞지 않는 연산 수행할 경우 x = [1,2] y = (1,2) z = 'test' # print(x+y) print(x+list(y)) # 예외처리 기본 # try : 에러가 발생할 가능성이 있는 코드 실행 # except 에러명1 : 여러개 가능 # except 에러명2 : # else : try 블록의 에러가 없을 경우 실행 # finally : 항상 실행. name = ['kim', 'lee', 'park'] # 예제1 try : z = 'kim' #'Cho' 예외처리가 된다. x = name.index(z) print('{} Found it {} in name'.format(z,x+1)) except ValueError : print('not fount it = occurred ValueError!') else : print('ok! else.') print() # 예제2 try : z = 'kim' #'Cho' 예외처리가 된다. x = name.index(z) print('{} Found it {} in name'.format(z,x+1)) except : # except Exception : 와 같다. print('not fount it = occurred') else : print('ok! else.') print() # 예제3 try : z = 'cho' #'Cho' 예외처리가 된다. x = name.index(z) print('{} Found it {} in name'.format(z,x+1)) except Exception as e : print(e) #'cho' is not in list print('not fount it = occurred') else : print('ok! else.') finally : print('ok! finally!') print() # 예제4 # 에외 발생 : raise # raise 키워드로 예외 직접 발생 try : a = 'park' if a == 'kim' : print('Ok! pass') else : raise ValueError #강제로 발생시키는에러. except ValueError : print('Occurred! Exception!') else : print('OK! else.')
'python_basic' 카테고리의 다른 글
[파이썬] 파일읽기 / 쓰기 (0) | 2020.11.30 |
---|---|
[파이썬] 외장함수 (0) | 2020.11.30 |
[파이썬] 내장함수 (0) | 2020.11.30 |
[파이썬] 패키지 / init (0) | 2020.11.23 |
[파이썬] 모듈 (0) | 2020.11.23 |
[파이썬] 클래스 (0) | 2020.11.23 |
[파이썬] 사용자로부터 입력받기 / input (0) | 2020.11.23 |