앎을 경계하기

Programming/Python

Python 예외 처리

양갱맨 2019. 12. 26. 02:07

파이썬 오류 예외 처리

try:
    실행할 코드
except [발생 오류 [as 오류 메시지 변수]]:
    오류 발생시 동작 코드
try:
    4/0
except ZeroDivisionError as e:
    print(e)
division by zero

try.. else

try:
    실행할 코드
except [발생 오류 [as 오류 메시지 변수]]:
    오류 발생시 동작 코드
else:
    오류 발생 안할 시 동작 코드
try:
    f = open('foo.txt','r')
except FileNotFoundError as e:
    print(str(e))
else:
    data = f.read()
    f.close()

try.. finally

finally는 try 수행 중에 예외 발생 여부 상관 없이 항상 수행된다.

f = open('foo.txt','w')
try:
    실행 코드
finally:
    f.close() #예외 발생 여부 상관 없이 수행되어야 하는 명령 주로 사용

오류 회피

특정 오류 발생 시 통과해야하는 경우

try:
    f = open("없는 파일", 'r')
except FileNotFoundError:
    pass

오류 일부러 발생시키기

raise 명령어를 이용해서 강제 오류 발생이 가능하다.

class Bird:
    def fly(self):
        raise NotImplementedError
class Eagel(Bird):
    def fly(self):
        pass

eagle = Eagel()
eagle.fly()
---------------------------------------------------------------------------

NotImplementedError                       Traceback (most recent call last)

<ipython-input-5-5be87b522879> in <module>
      3 
      4 eagle = Eagel()
----> 5 eagle.fly()


<ipython-input-4-e8d1e4453b08> in fly(self)
      1 class Bird:
      2     def fly(self):
----> 3         raise NotImplementedError


NotImplementedError: 
class Eagel(Bird):
    def fly(self):
        print("very fast") # Bird의 NotImplementedError를 발생시키지 않으려면 반드시 상속하는 클래스에서 메소드가 구현되어야한다.

eagle = Eagel()
eagle.fly()
very fast

'Programming > Python' 카테고리의 다른 글

Python 객체 파일에 저장하기  (0) 2020.01.01
Python 내장 함수  (0) 2019.12.26
Python 클래스 상속  (0) 2019.12.26
Python 클래스  (0) 2019.12.26
Python 파일 입출력  (0) 2019.12.26