예외 잡기
사용자 지정 예외를 직접 작성하기 전에, 먼저 예외 처리의 기초를 확실히 다져 봅시다.
이 연습 문제에서는 두 개의 인수, 리스트 x와 인덱스 ind를 받아 해당 인덱스의 리스트 요소를 뒤집는(역수로 만드는) 함수 invert_at_index(x, ind)가 주어집니다. 예를 들어 invert_at_index([5,6,7], 0)은 1/5, 즉 0.2를 반환합니다.
목표는 발생한 오류의 유형에 따라 사용자 지정 예외를 발생시키는 대신, 해당 오류를 잡아 처리하는 에러 핸들링을 구현하는 것입니다.
이 연습은 강의의 일부입니다
Python 객체 지향 프로그래밍 입문
연습 안내
함수 내부에 try - except - except 패턴(두 개의 except 블록)을 사용해 다음 두 가지 예외를 잡아 처리하세요.
try에서는 코드를 있는 그대로 실행해1/x[ind]를 반환합니다.ZeroDivisionError가 발생하면"Cannot divide by zero!"를 출력합니다.IndexError가 발생하면"Index out of range!"를 출력합니다.
코드가 오류 없이 실행되고 콘솔 출력이 다음과 같으면 정답입니다.
0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Modify the function to catch exceptions
def invert_at_index(x, ind):
____:
return 1/x[ind]
_____:
print("____")
____:
print("____")
a_list = [5,6,0,7]
# Works okay
print(invert_at_index(a_list, 1))
# Potential ZeroDivisionError
print(invert_at_index(a_list, 2))
# Potential IndexError
print(invert_at_index(a_list, 5))