파이썬에서 예외 처리하기
파이썬은 다른 프로그래밍 언어에 비해 예외를 발생시키는 상황이 매우 많습니다.
자세히 살펴보겠습니다. 다음과 같은 리스트가 있다고 가정해 보겠습니다:
lst = [1, 2, 3]
리스트에 존재하지 않는 요소에 접근해 봅시다:
print(lst[4])
코드를 실행한 후 다음과 같은 오류(예외)가 출력됩니다:
IndexError: list index out of range
하지만 예외를 출력하지 않고 작업을 계속하려면 try-except 구문을 사용하여 예외를 잡아야 합니다.
구문은 다음과 같습니다:
try:
# 예외를 발생시킬 수 있는 코드
except:
# 오류 처리
try 블록에는 예외가 포함될 수 있는 코드를 배치해야 합니다.
만약 이 코드를 실행하는 동안 예외 상황이 발생하면 코드 실행이 중단되지 않고 except 블록의 코드로 이동합니다.
이 블록에서는 발생한 오류의 본질을 가능한 한 정확하게 설명하는 메시지를 출력하는 코드를 작성해야 합니다.
반면에 try 블록을 실행하는 동안 예외 상황이 전혀 발생하지 않으면 유용한 코드만 실행되고 except 블록의 코드는 실행되지 않습니다.
리스트에 존재하지 않는 요소에 접근할 때 발생하는 예외를 잡아봅시다.
이를 위해 try 블록에 잠재적 오류가 있는 코드를 배치합니다.
그리고 except 블록에는 콘솔에 'error: elem is not exist' 메시지를 출력하도록 지정합니다:
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
코드를 실행한 후 다음과 같이 출력됩니다:
'error: elem is not exist'
try-except 구문을 학습한 후 작성하는 코드 스타일이 바뀌어야 합니다.
이제 예외 상황이 발생할 수 있는 모든 부분을 try로 감싸고, except 블록에 해당 예외에 대한 반응을 작성해야 합니다.
사용자에게 두 개의 숫자를 입력받으세요. 하나를 다른 하나로 나누세요. 영으로 나누는 예외 상황을 처리하세요.
사용자에게 숫자를 입력받으세요. 해당 숫자의 제곱근을 구하세요. 음수의 제곱근을 구하는 예외 상황을 처리하세요.
리스트가 주어졌습니다. 사용자에게 정수를 입력받으세요. 사용자가 입력한 번호에 해당하는 리스트 요소를 가져오세요. 사용자가 리스트 범위를 벗어난 숫자를 입력했을 때 발생하는 예외 상황을 처리하세요.
다음 코드가 주어졌습니다:
num = '5'
res = num + 2
print(res)
이 코드의 문제점은 무엇입니까? 그 결함을 수정하세요.
다음 코드가 주어졌습니다:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
이 코드의 문제점은 무엇입니까? 그 결함을 수정하세요.