Exception : 예외
예상치 못한 예외들이 발생함
- 예상 가능한 예외
발생 여부를 프로그래머가 사전에 인지
개발자가 명시적으로 정의해야함
처리 : if문 - 예상 불가능한 예외
인터프리터 과정에서 발생하는 예외
ex)정수를 0으로 나눔, 리스트의 범위를 넘어가는 값 호출
처리 : exception handling
Exception handling
try:
예외 발생 가능 코드
except <Exception Type>:
예외 발새시 대응하는 코드
else:
예외가 발생하지 않을 때 동작하는 코드
if문으로 대체 가능하지만 try~except 문을 더 권장한다.
for i in range(10):
try:
print(10/i)
except ZeroDivisionError:
print("Error")
print("Not divided by 0")
except IndexError as e:
print(e)
ZeroDivisionError는 built-in error이다.
exception을 실행하고 하고 다시 코드를 수행한다.
IndexError 처럼 명시하는 것이 좋다. Exception 전체를 잡아버리면 어디에서 명확하지 않기에 좋지 않다.
try:
예외 발생 가능 코드
except <Exception Type>:
예외 발생시 동작하는 코드
finally:
예외 발생 여부와 상관없이 실행됨
raise 구문
필요에 따라 강제 Exception을 발생시킴
raise <Exception Type>(예외정보)
이렇게 사용하면 되는데, 밑은 예시이다.
while True:
value=input("변환할 정수 값을 입력하세요")
for digit in value:
if digit not in "0123456789":
raise ValueError("숫자값을 입력하지 않으셨습니다")
print("정수값으로 변환된 숫자 -", int(value))
value값이 정수가 아니면 ValueError를 발생시켜 버린다.
assert
assert 예외조건
def get_binary_number(decimal_number):
assert isinstance(decimal_number,int)
return bin(decimal_number)
print(get_binary_number(10.0))
assert문에서 int가 입력되었는지 아닌지를 판단한다.
isinstance가 True나 False로 나오게 되고, False일 때는 AssetionError를 발생시킨다.
Reference : 부스트캠프 AI Tech 3기 Pre-Course - Module and Project
'개발 > Python' 카테고리의 다른 글
부스트캠프 AI Tech 3기 Pre-Course [4]-3 Logging Handling / 로그, 로깅 (0) | 2021.12.08 |
---|---|
부스트캠프 AI Tech 3기 Pre-Course [4]-2 File Handling / 파일 (0) | 2021.12.07 |
부스트캠프 AI Tech 3기 Pre-Course [3] Module and Project (0) | 2021.12.07 |
부스트캠프 AI Tech 3기 Pre-Course [2]-3 decorate,일급객체, inner function (0) | 2021.12.07 |
부스트캠프 AI Tech 3기 Pre-Course [2]-2 객체 지향 언어의 특징 (0) | 2021.12.06 |