TIL09.점프 투 파이썬(4)

Jaeyeon·2020년 12월 30일
0

예외처리 기법

  • try,except 기법
try:
	4/0
except:
  	print("0이 나와버려요 ㅜㅜ")
    
    결과값은: '0이 나와버려요ㅜㅜ' 가 나온다!
  • 발생 오류만 포함한 except문 (except뒤에 따라온 오류 메시지가 발생시 밑에 출력)
try:
	4/0
except ZeroDivisionError:
	print("0이 나옵니다..")
    
결과값은 '0이 나옵니다..' 가 나온다!
  • 발생 오류와 오류메시지 변수까지 포함한 except문
try:
	4/0
except ZeroDivisionError as e:
	print(e)
    
결과값은 'division by zero' 가 나온다.

try ... finally

  • try문에는 finally 절을 사용할 수 있다.
  • 보통 finally 절은 사용한 리소스를 close 해야 할 때에 많이 사용된다.
f = open("foo.txt",'w')
try:
	#무언가를 수행한다.
finally:
	f.close()
    
foo.txt파일을 쓰기 모드로 연 후에 try문을 수행 한 후 예외 발생 여부와 상관없이
finally절 에서 f.close()로 열린 파일을 닫을 수 있다.

여러개의 오류 처리하기

try:
	a=[1, 2]
    	print(a[3])
        4/0
except ZeroDivisionError:
	print("0으로 나눌수 없음")
except IndexError:
	print("인덱싱 할 수 없음")

print(a[3])과 4/0 모두 에러를 발생 시키는 출력이다.
하지만 printa([3])이 더 먼저이기 때문에 결과값은
'인덱싱 할 수 없음' 이 나오게 된다.
이 처럼 먼저 발생한 오류의 출력 하나만을 실행 시킨다.

또한

try:
	a=[1, 2]
	print(a[3])
	4/0
except (ZeroDivisionError, IndexError) as r:
	print(r)

이와 같이 오류 메시지를 둘이 묶어도 된다.
결과값은 list index out of range가 나온다.

오류 회피하기

  • 특정 오류가 발생할 경우 그냥 통과 시켜야 할 때 사용한다. (pass)
try:
	f = open("foo.txt","w")
except FileNotFoundError:
	pass			#파일을 못찾아도 그냥 pass해라

오류 일부러 발생시키기

  • 오류를 일부러 발생시켜야 할 때는 raise 명령어를 사용하면 된다.
class Bird:
	def fly(self):
		raise NotImplementError

	
class Eagle(Bird):
	pass

a = Eagle()
a.fly()

이렇게 작성하면 에러가 난다.
이 에러를 해결하려면 Eagle에 fly 메서드 함수를 오버라이딩 해야 해결이 된다.

profile
생각하는 개발자 되기

0개의 댓글