Life is too short, You need python
Python 예외처리
프로그램을 만들다 보면 많은 오류를 직면하게 된다. 그럴 때마다 오류를 해결해나가야 하기 때문에 그 오류가 어디서 발생하고 어느 부분에서 발생하고 또한, 무시해야하는 경우가 생길 수도 있기 때문에 예외처리가 존재한다.
오늘은 예외처리에 대해서 포스팅을 해보겟다.
try, except문
try:
...
except[발생오류[as 오류 메시지 변수]]:
...
except[발생오류[as 오류 메시지 변수]] 에서 []의 기호는 생략이 가능하다는 표기법이다.
except에 대해서
1. try, except만 쓰는법
try:
...
except:
...
2.발생 오류만 포함한 except문
try:
...
except 발생오류:
...
3.발생오류와 오류 메시지 변수까지 포함한 except문
try:
...
except 발생오류 as 오류 메시지 변수:
...
try:
4/0
except ZeroDivisionError as e:
print(e)
>>> division by zero
try...else
try:
f=open('foo.txt','r')
except FileNotFoundError as e:
print(str(e))
else:
data=f.read()
f.close
>>> 만약 foo.txt라는 파일이 없다면 except가 실행이 되고 파일이 있다면 else절이 수행될 것이다.
try .. final
f=open('foo.txt','w')
try:
#무언가를 수행한다.
finally:
f.close()
>>> foo.txt 라는 파일이 쓰기모드로 열린 후 try문이 수행된 후 예외 발생 여부에 상관없이 finally절에서
f.close()로 열린 파일을 닫을 수 있다.
오류회피하기
특정오류를 그냥 통과시켜야 할 때가 있을 수 있다.
try:
f=open("없는파일",'r')
except FileNotFoundError:
pass
>>> 파일이 없더라도 오류를 발생시키지 않고 통과한다.
오류 일부러 발생시키기
class Bird:
def fly(self):
raise NotImplementedError
class Eagle(Bird):
pass
eagle=Eagle()
eagle.fly()
>>> Traceback (most recent call last):
File "...", line 36, in <module>
eagle.fly()
File "...", line 30, in fly
raise NotImplementedError
NotImplementedError
이러한 오류가 발생한다.
class Bird:
def fly(self):
print("very fast")
class Eagle(Bird):
pass
eagle=Eagle()
eagle.fly()
클래스를 이와 같이 함수를 구현하면 오류가 없이 very fast가 구현된다.