try~except로 예외 처리하기.
my_list = [1,2,3]
try:
print("첨자를 입력하세요.")
index=int(input())
print(my_list[index]/0)
except ZeroDivisionError as err:
print("0으로 나눌 수 없습니다.({0})")
except IndexError as err:
print("잘못된 첨자입니다.({0})".format(err))
finally:
print("나는 마지막에 무조건 나온다.")
실행결과
2 입력 시
0으로 나눌 수 없습니다.(division by zero)
나는 마지막에 무조건 나온다.
5 입력 시
잘못된 첨자입니다.(list index out of range)
나는 마지막에 무조건 나온다.
try는 말 그대로 실행구문이다.
except는 예외 발생 시
실행되는 구문이다.
finally는 try 구문을 진행하던 except 구문을 진행하던
무조건 실행된다.
raise문은 try문 안에서 예외를 직접 일으킬 수 있다.
여기서 중요한 점은 except는
Exception라는 기본으로 내장되어 있는 class를 사용한다는 것이다.
Exception 안에 arithmeticError 안에 ZeroDivisionError 등이 있고,
Exception 안에 LookupError 안에 IndexError 등이 있다.
except Exception as err:
print("1. 예외가 발생하였습니다. ({0}).format(err))
except ZeroDivisionError as err:
print("2. 0으로 나눌 수 없습니다. ({0}).format(err))
except IndexError as err:
print("3. 잘못된 첨자입니다. ({0}).format(err))
실습 1
try:
s=list(input())
a=int(input("시작 지점 입력"))
b=int(input("취할 갯수 입력"))
if (b>len(s)):
raise Exception("취할 갯수가 처음에 입력한 문자길이 보다 깁니다.")
elif (a>len(s)):
raise Exception("시작지점이 입력한 문자열 길이보다 큽니다.")
elif (a<1 or b<1):
raise Exception("시작 지점 또는 취할 갯수를 0보다 큰 값을 입력하세요.")
else:
result= s[a-1:a-1+b]
print(result)
except Exception as err:
print("예외가 발생하였습니다.({0})".format(err))
else:
print("출력에 성공했습니다.")
finally:
print("나는 마지막에 무조건 출력 됩니다.")
실습 2
class를 사용해서 try except 활용.
부모 클라스를 기본적으로 Exception으로 한다.
class startPointError(Exception):
def __init__(self):
super().__init__("시작지점이 입력한 문자열 길이보다 큽니다.")
class extractPointError(Exception):
def __init__(self):
super().__init__("취할 갯수가 처음에 입력한 문자길이 보다 깁니다.")
class smallerThanZero(Exception):
def __init__(self):
super().__init__("시작 지점 또는 취할 갯수를 0보다 큰 값을 입력하세요.")
try:
s=list(input())
a=int(input("시작 지점 입력"))
b=int(input("취할 갯수 입력"))
# midstr = s[a-1:len(s)]
if (b>len(s)):
raise extractPointError()
elif (a>len(s)):
raise startPointError()
elif (a<1 or b<1):
raise smallerThanZero()
else:
result= s[a-1:a-1+b]
print(result)
except Exception as err:
print("예외가 발생하였습니다.({0})".format(err))
else:
print("출력에 성공했습니다.")
finally:
print("나는 마지막에 무조건 출력 됩니다.")
'Tech Blog > Python' 카테고리의 다른 글
딥러닝을 위한 텐서 개념 공부하기 (0) | 2021.08.04 |
---|---|
Django 설치 mac,window 환경 링크 (0) | 2021.06.24 |
Python - 변수(인자)의 종류 (0) | 2021.06.24 |
Python - 데이터 타입 정리(숫자,텍스트,리스트,튜플,딕셔너리 등) (0) | 2021.06.23 |
파이썬 - 문자열 제거 및 추출과 revsqueeze, hex to int 실습 (0) | 2021.06.22 |