본문 바로가기

Python

Try, except 구문

try와 except 구문은 파이썬의 예외 처리 메커니즘입니다. 예외 처리란 프로그램 실행 중에 발생할 수 있는 오류를 예측하고 이에 대한 대응을 정의하는 것을 말합니다. 파이썬에서는 특정 코드 블록을 try 구문으로 감싸고, 해당 블록에서 예외가 발생하면 except 구문으로 이를 처리할 수 있습니다.

 

기본 구조

try:
    # 예외가 발생할 수 있는 코드
except 예외타입:
    # 예외 발생 시 처리할 코드

 

도입 배경

try와 except 구문은 파이썬 1.0부터 도입되었습니다. 이는 1994년에 처음 릴리스되었습니다. 도입된 이유는 예외 처리 메커니즘을 통해 프로그램의 안정성을 높이고, 예외 상황에서 적절한 처리를 할 수 있도록 하기 위해서입니다.

 

장점

1. 프로그램의 안정성 향상: 예외가 발생하더라도 프로그램이 중단되지 않고 정상적으로 실행을 계속할 수 있습니다.

2. 오류 처리의 중앙화: 특정 코드 블록에 대한 예외 처리를 중앙에서 관리할 수 있어 코드의 가독성과 유지보수성이 향상됩니다.

3. 특정 오류에 대한 대응: 각기 다른 예외 상황에 대해 다르게 대응할 수 있습니다.

try:
    # 예외가 발생할 수 있는 코드
except 예외타입:
    # 예외 발생 시 처리할 코드
else:
    # 예외가 발생하지 않았을 때 실행할 코드
try:
    # 예외가 발생할 수 있는 코드
except 예외타입:
    # 예외 발생 시 처리할 코드
finally:
    # 예외 발생 여부와 상관없이 항상 실행할 코드

 

활용 예시

1. 파일 열기와 닫기

try:
    file = open("example.txt", "r")
    content = file.read()
except FileNotFoundError:
    print("파일을 찾을 수 없습니다.")
finally:
    file.close()

 

2. 데이터베이스 연결

import sqlite3

try:
    conn = sqlite3.connect("example.db")
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM users")
    results = cursor.fetchall()
except sqlite3.DatabaseError as e:
    print(f"데이터베이스 오류가 발생했습니다: {e}")
finally:
    conn.close()

 

3. 사용자 입력 처리

my_list = [1, 2, 3, 4, 5]

try:
    index = int(input("접근할 리스트 인덱스를 입력하세요: "))
    print(f"리스트의 {index}번째 요소는 {my_list[index]}입니다.")
except IndexError:
    print("유효한 인덱스를 입력하세요.")
except ValueError:
    print("숫자를 입력하세요.")

 

4. 사전에서 키 찾기

my_dict = {"name": "Alice", "age": 30}

try:
    key = input("찾고자 하는 키를 입력하세요: ")
    value = my_dict[key]
    print(f"키 '{key}'의 값은 {value}입니다.")
except KeyError:
    print("해당 키가 사전에 존재하지 않습니다.")

 

5. 사용자 정의 예외처리

class NegativeNumberError(Exception):
    pass

def check_positive(number):
    if number < 0:
        raise NegativeNumberError("음수는 허용되지 않습니다.")

try:
    num = int(input("양수를 입력하세요: "))
    check_positive(num)
    print(f"입력한 숫자는 {num}입니다.")
except NegativeNumberError as e:
    print(e)
except ValueError:
    print("유효한 숫자를 입력하세요.")

 

try와 except 구문은 예외 발생 시 프로그램의 정상적인 흐름을 유지하고, 예외에 대한 적절한 처리를 통해 코드의 신뢰성을 높이는 데 중요한 역할을 합니다. 이를 통해 예외 상황에 대한 처리 로직을 명확하게 하고, 리소스를 효율적으로 관리할 수 있습니다.