상세 컨텐츠

본문 제목

[PYTHON] 예외처리(Exception)

PYTHON/기본

by ranlan 2021. 6. 14. 11:34

본문

728x90

 

Try & Exception

오류 종류에 상관없이 오류 발생 시 except 블록 수행

try:
	...
except:
	...

해당 오류가 발생했을 때 (미리 정해놓은 오류 이름과 일치할 때만) except 블록 수행

try:
	...
except 발생오류1:
	...
except 발생오류2:
	...

오류 메시지의 내용까지 알고 싶을 때

try:
	...
except 발생오류 as 오류 메시지 변수:
	...

예시) 

try:
	4 / 0
except ZeroDivisionError as e:
	print(e) # division by zero

오류 넘어가기

try:
	...
except:
	pass

try문에 else절 활용

try:
	...
except [발생 오류[as 오류 메시지 변수]]:
	# 오류 발생 시 수행
	...
else:
	# 오류가 없을 경우 수행
	...

 

 

Try & Finally

try 수행 도중 예외 발생 여부에 상관없이 항상 finally 블록 수행

try:
	...
finally:
	...

예시) 주로 리소스를 close해야할 때 사용

f = open('data.txt', 'w')
try:
	...
finally:
	f.close()

 

 

오류 발생시키기

raise 오류

예) https://wikidocs.net/30

class Bird:
    def fly(self):
        raise NotImplementedError
더보기

NotImplementedError

파이썬 내장 오류로 꼭 작성해야 하는 부분이 구현되지 않았을 경우 일부러 오류를 일으키기 위해 사용

Bird클래스를 상속받는 자식 클래스는 fly라는 메서드를 구현해야 하도록 함

class Eagle(Bird):
    pass

eagle = Eagle()
eagle.fly()

Eagle클래스는 Bird클래스를 상속받지만 fly 메서드를 구현하지 않았기 때문에 Bird 클래스의 fly 메서드가 호출됨

>> NotImplemented Error 발생

 

해당 오류가 발생하지 않게 하려면 Eagle클래스에서 fly메서드 반드시 구현해야함

class Eagle(Bird):
    def fly(self):
        print("very fast")

eagle = Eagle()
eagle.fly() # very fast

 

 

예외 만들기

파이썬 내장 클래스인 Exception 클래스 상속

class MyError(Exception):
	...
    def __str__(self):
    	# 에러 메시지
    	return "{error message}"
    
# 에러 호출
raise MyError()

 

 

728x90

관련글 더보기

댓글 영역