728x90
반응형
예외(Exception)란?
예상 가능한 예외 또는 예상이 불가능한 예외로 나눌 수 있다.
예상 가능한 예외 |
예상 불가능한 예외 |
발생 여부를 사전에 인지할 수 있다 개발자가 반드시 명시적으로 정의해야 한다 예를들어 사용자의 잘못된 입력, 파일이 없는 경우가 있을 수 있다 |
개발자 실수로 실행 시 발생하는 예외 예를들어 리스트 범위를 넘어가는 값 호출, 정수0으로 나누는 것들이 있다. |
예외처리
예외가 발생할 경우 후속 조치 등의 대처가 필요한다. 프로그램도 제품이기 때문에 모든 잘못된 상황에 대해 대처해야 한다.
예외처리 (Exception Handling)
문법
try - except - else - finally
try:
#예외 발생 가능 코드
except <Exception Type>:
#예외 발생시 대응하는 코드
else:
#예외가 발생하지 않을 때 동작하는 코드
finally:
#예외 발생 여부와 상관없이 실행됨
raise
raise <Exception Type> (예외 정보)
assert
assert 예외조건
Built-in Exception
파이썬에서 기본적으로 제공하는 예외.
Exception 이름 | 내용 |
IndexError | List의 index 범위를 넘어갈 때 |
NameError | 존재하지 않은 변수 호출 시 |
ZeroDevisionError | 0으로 숫자를 나누는 경우 |
ValueError | 변환할 수 없는 문자/숫자 변환 시 |
FileNotFoundError | 존재하지 않는 파일 호출 시 |
예제
1. built-in exception 사용
for i in range(10):
try:
print(i, 10//i)
except ZeroDivisionError: # built-in 에러
print('Not divided by 0')
2. except 세분화
a = [1,2,3,4,5]
for i in range(10):
try:
print(i, 10//i)
print(a[i])
except ZeroDivisionError: # built-in 에러
print('Not divided by 0')
except IndexError as e:
print(e)
except Exception as e: # 지정하지 않은 value error -> 하지만 권장하지 않음
print(e)
3. raise
while True:
value = input('변활할 정수값을 입력 해 주세요')
for digit in value:
if digit not in '0123456789':
raise ValueError('숫자값을 입력하세요')
print('정수값으로 변환된 숫자 - ', int(value))
4. assert
def get_binary_nubmer(decimal_number):
assert isinstance(decimal_number, int)
return bin(decimal_number)
boost 코스의 인공지능 기초 다지기 강좌를 듣고 정리한 내용입니다.
https://www.boostcourse.org/ai100/lecture/739173?isDesc=false
728x90
반응형
'Programming' 카테고리의 다른 글
Python functools 모듈의 내장함수[기본] (0) | 2022.08.06 |
---|---|
파이썬 로그 핸들링 (0) | 2022.08.01 |
Black을 이용한 코드 스타일 맞추기 (0) | 2022.07.14 |
[Library] Dask 추가 정보 및 테스트 (0) | 2022.07.10 |
[Library] Dask? Spark? (0) | 2022.07.05 |