본문 바로가기
방구석코딩/파이썬 기초문법

[파이썬] finally 명령어 역할, 예외처리

by 석세상 2024. 4. 9.
반응형

파이썬 finally 명령어 역할, 예외처리에 대해서 예시를 들어가며 알아보도록 하겠습니다. 예외처리에 사용되는 명령어 중 finally는 try 명령 블록 내에서 실행되는데요. 사용법에 대해 알아보겠습니다.

 


finally 명령어 구조

파이썬에서 "finally" 블록은 예외 발생 여부에 관계없이 실행해야 하는 코드를 입력합니다. "try" 블록 내의 구조는 다음과 같습니다.

try:
	# Code that might raise an exception
	# ...
except ExceptionType as e:
	# Code to handle the exception
	# ...
finally:
	# Code that always runs, exception or not
	# ...

 

명령어에 대해 살펴보자면,

  • try: 예외가 발생할 수 있는 코드를 포함합니다.
  • exept: 예외를 포착하고 처리합니다.
  • ExceptionType: catch할 예외 유형을 지정합니다.
  • finally: 예외 여부와 상관없이 실행되는 코드가 포함되어 있습니다.

이제 "finally" 블록을 이해하기 위해 예제를 살펴보겠습니다.

 

예시 1: 정상적인 리소스 폐쇄

def read_and_close_file(filename):
	try:
		file = open(filename, 'r')
		content = file.read()
		# Simulate an exception during processing
		result = 10 / 0
	except FileNotFoundError as e:
		print(f"Error: {e}. The file '{filename}' does not exist.")
	except ZeroDivisionError as e:
		print(f"Error: {e}. Cannot divide by zero.")
	else:
		print(f"Content of '{filename}':\n{content}")
	finally:
		if 'file' in locals():
			file.close()
			print("File closed.")
            
# Example usage
read_and_close_file('sample.txt')
read_and_close_file('nonexistent_file.txt')

 

이 예에서 "finally" 블록은 예외가 발생하더라도 파일이 닫히도록 실행시켜 줍니다.

 

예시 2: 데이터베이스 연결 정리

import sqlite3

def perform_database_operation():
	try:
		conn = sqlite3.connect('example.db')
		cursor = conn.cursor()
		# Simulate an exception during database operation
		cursor.execute("SELECT * FROM non_existent_table")
	except sqlite3.Error as e:
		print(f"Database Error: {e}")
	finally:
		if 'conn' in locals():
			conn.close()
			print("Database connection closed.")

# Example usage
perform_database_operation()

여기서 "finally" 블록은 데이터베이스 연결이 닫히도록 실행하여 무결성을 유지합니다.

 

 

고려사항 및 주의점

  • 리소스 정리: 파일 닫기 또는 데이터베이스 연결 닫기와 같은 리소스 정리에는 **"finally"**를 사용합니다.
  • 실행 보장: "finally" 블록의 코드는 예외 발생 여부에 관계없이 실행됩니다.
  • 중복 방지: "finally" 블록과 "try" 블록 사이에 코드를 중복하지 마세요. 주된 목적은 청소입니다.
  • 예외 없음: 예외가 발생하지 않으면 "finally" 블록은 "try" 블록 이후에 계속 실행됩니다.

 

마무리

이제 "finally" 명령을 사용하여 Python 예외 처리의 마지막까지 배워보았는데요. 이러한 지식을 갖춘 코드는 적절한 리소스 관리를 보장하면서 예외를 우아하게 탐색할 수 있습니다.

 

프로그래밍에 도전하면서 코드가 강력하고 탄력적이며 어떤 어려움에도 대비할 수 있기를 바랍니다.

728x90
반응형

댓글