에러 종류
1. FileNotFoundError
2. ZeroDivisionError
3. IndexError
등등 여러가지가 있다.
예외처리 하기
try, except 문 사용법
1. try, except 만 쓰기
try:
...
except:
...
발생하는 모든 오류에 대해서 except 블록을 수행한다.
2. 발생 오류만 포함한 except 문
try:
...
except IndexError:
...
특정 오류가 발생했을 경우에만 except 블록을 수행한다.
3. 발생 오류와 오류 매시지 변수까지 포함한 except문
try:
4 / 0
except ZeroDivisionError as e:
print(e)
division by zero
오류가 발생했을 때 오류 메시지를 확인 할 수 있다.
try .. else 문
try 문은 else 절을 지원한다. else 절은 예외가 발생하지 않은 경우에 실행되며 반드시 except절 바로 다음에 위치해야 한다.
try:
f.open('foo.txt', 'r')
except FileNotFoundError as e:
print(str(e))
else:
data = f.read()
f.close()
foo.txt 파일이 없다면 except 절이 수행되고 있으면 else 절이 수행된다.
try .. finally
try 문에는 finally 절을 사용할 수 있다. finally 절은 try문 수행 도중 예외 발생 여부와 상관없이 항상 수행된다. 보통 사용한 리소스를 close 해야 할 경우에 많이 사용된다.
f = open('foo.txt', 'w')
try:
# 수행문
finally:
f.close()
오류 회피하기
특정 오류가 발생할 경우 프로그램 종료가 아닌 그냥 통과시켜야 하는 경우가 있다.
try:
f = open('없는파일', 'r')
except FileNotFoundError:
pass
위의 코드는 파일이 없더라고 pass를 사용하여 오류를 회피하는 방법이다.
오류 일부러 발생시키기
예를 들어 Bird 라는 클래슬 상속받는 자식클래스는 반드시 fly 라는 함수를 구현하도록 강제하고 싶은경우가 있다.
class Bird:
def fly(self):
raise NotImplementedError
NotImplementedError 는 파이썬 내장 오류로, 꼭 작성해야하는 부분이 구현되지 않았을 경우 일부러 오류를 발생시키고자 사용한다.
만약 자식클래스가 fly 함수를 구현하지 않고 fly 함수를 호출한다면 에러가 발생한다.
# Eagle 클래스는 Bird 클래스를 상속받음.
class Eagle(Bird):
pass
eagle = Eagle()
eagle.fly()
NotImplementedError 가 발생하지 않게 하려면 다음과 같이 반드시 fly 함수를 구현해야 한다.
class Eagle(Bird):
def fly(self):
print('very fast')
eagle = Eagle()
eagle.fly()
very fast
'Python' 카테고리의 다른 글
Python input().split(), list.sort(reverse=True) 공백으로 자르기, 내림차순 정렬 (0) | 2022.06.20 |
---|---|
Python 내장함수 issubclass(), isinstance(), lambda(), filter(), map(), sorted(), zip() (0) | 2022.06.19 |
Python 패키지 (0) | 2022.06.18 |
Python 모듈, __name__ == '__main__' (0) | 2022.06.13 |
Python 파일 입력, 출력, readline(), readlines(), 한줄씩, 전체 다 (0) | 2022.06.13 |
댓글