다른 언어와 마찬가지로 파이썬 또한 예외처리를 지원한다.
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