파이썬 예외처리 (Python exeption)
오류의 예시
Direcotory안에 없는 파일을 실행
FileNotFoundError: [Errno 2] No such file or directory
𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅
0으로 나눌 경우
ZeroDivisionError: division by zero
𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅
index가 범위를 벗어난 경우
IndexError: list index out of range
예외 처리기법(exception handling)
try - except (try - except - except- .. 도 가능)
try:
실행내용
except [발생오류 [as 오류메세지 변수]]: (except (발생오류1,발생오류2)도 가능)
실행내용
try 블록의 실행내용을 실행하다가
예외가 발생하면 except 블록의 내용을 실행
(발생오류가 표기된 경우 발생오류와 일치할때만 except블록 실행)
(오류메세지 변수가 표기된경우 오류메세지의 내용까지 알려준다)
사용)
try:
4 / 0
except ZeroDivisionError as e:
print(e)
finally
f = open('test.txt' , 'w')
try :
실행문
finally:
f.close()
finally블록은 예외 발생과 상관없이 항상 수행되는 블록이다
일반적으로 사용한 리소스를 close할때 사용
pass
오류를 발생시키지 않고 지나가고 싶을때는
except 블록에 pass만 넣어서 처리해주자
(pass 는 빈 껍데기 Class를 만들때도 사용된다)
raise (에러를 강제로 발생) - raise를 이용해 method overriding강제
JAVA에서의 interface나 abstract와 비슷하게
부모 클래스를 상속받은 자식클래스에서 반드시 함수 재정의를 강제할때
class ParentClass:
def myfunction(self):
raise NotImplementedError
자식 클래스에서 myfunction을 구현하지 않고 myfunction을 사용하게되면 오류발생
Custom Error / 내가 만든 에러
class MyError(Exception):
def __str__(self): __str__메서드는 오류메세지를 print문으로 출력할때 호출
return "error massage"
𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅
def myfunction(x);
if x == 'b':
raise MyError() 인자로 'b'를 받게되면 MyError를 발생시킨다
print(x)
𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅𝌅
try:
myfunction(a)
myfunction(b) 예외 발생
except MyError as e: MyError라는 예외가 발생되었으니 MyError내 __str__에서
print(e) e(에러메세지) 리턴 받음
댓글 없음:
댓글 쓰기