본문 바로가기

# Language/Python

[Python] 파이썬 에러 핸들링: Exceptions

파이썬 에러 핸들링: Exceptions 

파이썬의 예외 처리는 try, except, else, finally 총 4가지로 이루어져 있다. 

try:
	실행할 코드
except:
	예외가 발생했을 때 처리하는 코드
else:
	예외가 발생하지 않았을 때 실행할 코드
finally:
	예외 발생 여부와 관계없이 항상 실행되는 코드

모든 에러 확인

try:
	...
except Exception as e:
	print(e)

여러개의 에러 처리

try:
	...
except ValueError as e:
	print(e)
except ZeroDivisionError as e:
	print(e)

에러 임의 생성

try:
	a = int(input())
	if a == 0:
		raize ZeroDivisionError
	else:
		b = 100/a
except ZeroDivisionError as e:
	print(e)

에러 회피 처리

try:
	...
except ZeroDivisionError as e:
	pass

사용자 정의 에러 추가

에러를 처리하는 Exception 클래스를 상속받아 사용자 정의 오류 케이스를 작성할 수 있다.

class SokuliError(Exception):
	def __init__(self, msg):
		self.msg = msg
	def __str__(self):
		return self.msg
age = int(input())
if a == 30:
	raise SokuliError('You are 30!')

>> 30
>> You are 30!

else 절 사용

try문 수행중 오류가 발생하면 except절이 수행되고, 에러가 없으면 else절이 수행된다.

try:
	age=int(input('나이를 입력하세요: '))
except:
	print('입력이 정확하지 않습니다.')
else:
	if age <= 18:
		print('미성년자는 술을 살 수 없습니다.')
	else:
		print('고주망태가 되어봅시다.')

finally 절 사용

finally절은 try문 수행 도중 예외 발생 여부에 상관없이 항상 수행한다. 보통 사용한 리소스를 close해야 할 때에 많이 사용된다.

try:
	url = input()
    
	super().__init__()
	self.driver.get(url)

	...
   
except Exception as e:
	print(e)

finally:
	self.end_session()