Python

[python] 파이썬 예외처리 정리

큐범 2021. 7. 4. 17:37

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가 구현된다.