Python 10. 예외처리

다른 언어와 마찬가지로 파이썬 또한 예외처리를 지원한다.

try ~ except

try: 예외 발생 예상 코드 except 예외 이름: 예외 발생시 수행되는 코드

try:
	f = open("C:/test.txt","r")
except FileNoFoundError:
	print("no file")
	raise SystemExit # raise -> 특정 예외 발생. 프로그램종료

try ~ except else

try 구문에서 예외가 발생하지 않았을 때 else 문 수행.

try:
	f = open("C:/test.txt","r")
except FileNoFoundError:
	print("no file")
	raise SystemExit # raise -> 특정 예외 발생. 프로그램종료
else:				# 파일이 열렸을 때만 수행
	print(f.read())
	f.close()

여러 예외 처리

~~
except KeyError:
	print("there is no data")
excpet KeyboardInterrupt:	# 여러개의 except 사용
	break
~~~

혹은

except(KeyboardInterrupt, ValueError, KeyError) as e: # 튜플로 묶어서 처리
	print(e)	# 예외에 대한 정보 출력
	if isinstance(e,KeyboradInterrupt):	# 각 예외에 맞게 분기
		print("KeyboardInterrupt raise")
		break

finally

예외의 발생 여부와 상관없이 항상 finally 다음 구문을 실행.

사용자 정의 예외

Exception 클래스를 상속받아 정의됨.

class myexcpet(Exception):	# 상속받아서 예외 정의
	def __init__(self,num,data):
		self.args =(num,data)
	def __str__(self):
		return "{} is greater than {}".format(self.args[0],self.args[1])

while True:
	try:
		data = input("?>")
		if int(data)>100:
			raise myexcept(100,data) # 예외 발생
		print(data)
	except myexcept as e:
		print("exception",e)

Comments