시작하기무료로 시작하기

예외 잡기

사용자 지정 예외를 직접 작성하기 전에, 먼저 예외 처리의 기초를 확실히 다져 봅시다.

이 연습 문제에서는 두 개의 인수, 리스트 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))
코드 편집 및 실행