try, except, finally
Contents
13.2. try
, except
, finally
¶
파이썬에서 예외 처리를 위해 try
, except
, finally
블록을 사용합니다. 이를 통해 프로그램의 오류를 처리하고, 예외 발생 시 적절한 대응을 할 수 있습니다. 각 블록의 사용법과 예제를 통해 자세히 알아보겠습니다.
13.2.1. 기본 구조¶
try:
# 예외가 발생할 수 있는 코드
pass
except 예외타입 as 변수:
# 예외 처리 코드
pass
finally:
# 항상 실행되는 코드
pass
try
블록: 예외가 발생할 수 있는 코드를 작성합니다.except
블록: 예외를 처리하는 코드를 작성합니다. 여러 개의except
블록을 사용하여 다양한 예외를 처리할 수 있습니다.finally
블록: 예외 발생 여부와 관계없이 항상 실행되는 코드를 작성합니다. 주로 정리 작업에 사용됩니다.else
블록: 예외가 발생하지 않았을 때 실행되는 코드를 작성합니다.
13.2.2. 기본 예외 처리¶
아래 코드는 ZeroDivisionError
예외를 처리하여, 예외가 발생했을 때 적절한 메시지를 출력합니다.
try:
result = 10 / 0
except ZeroDivisionError:
print("Cannot divide by zero.")
13.2.3. 여러 예외 처리¶
아래 코드는 ValueError와
ZeroDivisionError를
처리하여, 각각의 예외 상황에 맞는 메시지를 출력합니다.
try:
number = int(input("Enter a number: "))
result = 10 / number
except ValueError:
print("Invalid input. Please enter a valid number.")
except ZeroDivisionError:
print("Cannot divide by zero.")
13.2.4. 모든 예외 처리¶
아래 코드는 모든 예외를 처리하며, 예외 메시지를 출력합니다.
try:
result = 10 / 0
except Exception as e:
print(f"An error occurred: {e}")
13.2.5. finally
블록¶
finally
블록은 예외 발생 여부와 관계없이 항상 실행됩니다.
이를 통해 파일 닫기, 데이터베이스 연결 해제 등과 같은 정리 작업을 수행할 수 있습니다.
이 코드는 파일을 읽고, 예외 발생 여부와 관계없이 파일을 닫습니다.
try:
file = open('example.txt', 'r')
content = file.read()
except FileNotFoundError:
print("The file does not exist.")
finally:
# 에러가 발생해서 작업을 하지 못했지만
# 여전히 파일은 열려 있는 상태
# finally를 이용해 파일을 닫아준다
# (우아한 종료)
file.close()
13.2.6. else
블록¶
else
블록은 예외가 발생하지 않았을 때 실행됩니다.
다음 코드는 사용자가 유효한 숫자를 입력했을 때 결과를 출력하고,
예외 발생 여부와 관계없이 “Execution completed.
” 메시지를 출력합니다.
try:
number = int(input("Enter a number: "))
result = 10 / number
except ValueError:
print("Invalid input. Please enter a valid number.")
except ZeroDivisionError:
print("Cannot divide by zero.")
else:
print(f"The result is {result}")
finally:
print("Execution completed.")
13.2.7. 종합 예제¶
이 예제는 사용자가 입력한 두 숫자를 나누는 프로그램입니다.
예외 상황을 처리하고, 결과를 출력하며, 항상 “Execution completed.” 메시지를 출력합니다.
def divide_numbers():
try:
numerator = int(input("Enter the numerator: "))
denominator = int(input("Enter the denominator: "))
result = numerator / denominator
except ValueError:
print("Invalid input. Please enter a valid number.")
except ZeroDivisionError:
print("Cannot divide by zero.")
else:
print(f"The result is {result}")
finally:
print("Execution completed.")
divide_numbers()