학습 목표
파이썬 예외 종류
문법적 에러 발생 실습
런타임 에러 발생 실습
Try - except - else - finally
문법적으로 에러가 없지만, 실행(런타임) 프로세스에서 발생하는 예외 처리 중요
linter : 코드스타일, 문법 체크를 해주는 기능
- 1번째 에러 - Syntax Error = 잘못된 문법
- 2번째 에러 - Name Error = 참조 변수가 없을 경우
- 3번째 에러 - ZeroDivisionError = 0 나누기 에러(언어 공통으로 나타난다)
- 4번째 에러 - Index Error = 인덱스 범위가 오버된 경우에 나타난다
- 5번째 에러 - Key Error = (딕셔너리에서 자주 발생하는 에러) 없는 키값을 불러올때 나오는 에러
그래서 5번째 에러를 사전에 방지하기 위해서 Get 메소드를 활용한다.
- 6번째 에러 - Attribute Error =모듈, 클래스에 있는 잘못된 속성 사용시에 나타난다.
- 7번째 에러 - Value Error = 참조 값이 없을 때 발생
- 8번째 에러 - File Not Found Error = 외부파일을 처리할 때 발생하는 에러
- 9번째 에러 - Type Error = 이 에러를 방지하기 위해 형변환을 잘 해야한다.
항상 예외가 발생하지 않을 것으로 가정하고 먼저 코딩한 후에 예외 발생시 예외 처리 코딩 권장 ( EAFP 코딩 스타일 )
예외 처리 기본
# try - 에러가 발생할 가능성이 있는 코드 실행
# except - 에러명1
# except - 에러명2
# else - 에러가 발생하지 않았을 경우 실행
# finally - 항상 실행
예외 처리 예01
name = ['Kim','Lee', 'Park']
try:
z = 'Kim'
x = name.index(z)
print("{} Found it! in name".format(z, x+1))
except ValueError:
print("Not fount it! - Occured ValueError!")
else:
print("Ok! else")
어떤 오류가 발생할지 모를 경우 except만 적는다.
name = ['Kim', 'Lee', 'Park']
try:
z = 'J'
x = name.index(z)
print("{} Found it! in name".format(z,x+1))
except:
print("Not found it! - Occured Error!")
else:
print("Ok! else")
[Finally]의 명령어는 실행의 여부와 관련없이 실행이 되는 코드이다.
try:
z = 'Kim'
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!")
예외 처리(else)는 하지 않지만, 무조건 실행되는 코드의 패턴임으로 숙지해 놓는다.
try:
print("try")
finally:
print("Ok Finally!")
다중 예외처리의 코드 작성 방법은 다음과 같다. 그러나 코드작성시 코드의 순서를 감안하고 작성을 해야한다.
try:
z = "Kim"
x = name.index(z)
print("{} Found it! in name".format(z, x+1))
except ValueError:
print("Not fount it! - ValueError Error!")
except IndexError:
print("Not found it! = IndexError Error!")
except Exception:
print("Not found it! = Occurred Error!")
else:
print("Ok! else!")
finally:
print("finally ok!")
직접 예외를 설정할시 코드는 다음과 같이 작성된다. (고급문법)
try:
a = '333'
if a == 'Kim':
print('Ok 허가!')
else:
raise ValueError
except ValueError:
print('문제 발생!')
except Exception as f:
print(f)
else:
print('Ok!')
댓글 없음:
댓글 쓰기