Python 예외 처리: try, except, finally

목차

  1. 서론
  2. 예외 처리란 무엇인가?
  3. try와 except
    1. 기본 구조
    2. 다양한 예외 처리
    3. 예외 메시지 출력
  4. finally
  5. 예외 처리의 중요성
  6. 실습 예제
  7. 마무리
  8. 추천 태그

1. 서론

프로그래밍을 하다 보면 예기치 않은 오류가 발생할 수 있습니다. 이러한 오류를 처리하지 않으면 프로그램이 비정상적으로 종료될 수 있습니다. Python에서는 이러한 예외 상황을 처리하기 위해 try, except, finally 구문을 제공합니다. 이번 포스팅에서는 예외 처리의 기본 개념과 사용법을 초보 개발자도 쉽게 이해할 수 있도록 설명하겠습니다.


2. 예외 처리란 무엇인가?

예외 처리란 프로그램 실행 중 발생할 수 있는 오류를 사전에 예측하고, 그에 대한 대응 방법을 미리 정의하는 것을 말합니다. 이를 통해 프로그램의 비정상적인 종료를 방지하고, 오류가 발생하더라도 안정적으로 프로그램을 종료하거나 계속 실행할 수 있도록 합니다.


3. try와 except


3.1 기본 구조

예외 처리는 try 블록과 except 블록을 사용하여 구현합니다. try 블록 안에는 예외가 발생할 수 있는 코드를 작성하고, except 블록 안에는 예외가 발생했을 때 실행할 코드를 작성합니다.


try:
    # 예외가 발생할 수 있는 코드
    num = int(input("숫자를 입력하세요: "))
    print(f"입력한 숫자는 {num}입니다.")
except ValueError:
    # 예외가 발생했을 때 실행할 코드
    print("유효한 숫자가 아닙니다. 다시 시도하세요.")

위 예제에서 사용자가 숫자가 아닌 값을 입력하면 ValueError 예외가 발생하고, except 블록이 실행됩니다.


3.2 다양한 예외 처리

여러 가지 예외를 처리하려면 여러 개의 except 블록을 사용할 수 있습니다.


try:
    num1 = int(input("첫 번째 숫자를 입력하세요: "))
    num2 = int(input("두 번째 숫자를 입력하세요: "))
    result = num1 / num2
    print(f"결과는 {result}입니다.")
except ValueError:
    print("유효한 숫자가 아닙니다. 다시 시도하세요.")
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다. 다시 시도하세요.")

이 예제에서 사용자가 잘못된 값을 입력하거나, 0으로 나누려 할 때 각각의 예외에 맞는 메시지가 출력됩니다.


3.3 예외 메시지 출력

예외 메시지를 출력하려면 except 블록에서 예외 객체를 사용하여 상세한 오류 정보를 출력할 수 있습니다.


try:
    num = int(input("숫자를 입력하세요: "))
    print(f"입력한 숫자는 {num}입니다.")
except ValueError as e:
    print(f"오류 발생: {e}")

위 예제에서 as e를 사용하여 예외 객체를 e라는 변수에 할당하고, 예외 메시지를 출력합니다.


4. finally

finally 블록은 예외 발생 여부와 상관없이 항상 실행됩니다. 파일을 닫거나, 네트워크 연결을 종료하는 등 반드시 실행되어야 하는 코드를 작성할 때 유용합니다.


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

위 예제에서는 파일을 열고 읽은 후, 예외 발생 여부와 상관없이 항상 파일을 닫습니다.


5. 예외 처리의 중요성

예외 처리는 프로그램의 안정성을 높이고, 사용자에게 유용한 오류 메시지를 제공하여 문제를 해결할 수 있도록 돕습니다. 또한, 예외 처리를 통해 예상치 못한 오류로 인한 프로그램의 비정상적인 종료를 방지할 수 있습니다.


6. 실습 예제


예제 1: 나이 입력 받기

사용자에게 나이를 입력받아 성인 여부를 출력하는 프로그램을 작성해보겠습니다.


try:
    age = int(input("나이를 입력하세요: "))
    if age >= 18:
        print("성인입니다.")
    else:
        print("미성년자입니다.")
except ValueError:
    print("유효한 나이를 입력하세요.")

예제 2: 파일 읽기와 쓰기

파일을 읽고, 그 내용을 새로운 파일에 쓰는 프로그램을 작성해보겠습니다.


try:
    with open("source.txt", "r") as src_file:
        content = src_file.read()
    with open("destination.txt", "w") as dest_file:
        dest_file.write(content)
    print("파일 복사가 완료되었습니다.")
except FileNotFoundError:
    print("파일을 찾을 수 없습니다.")
except Exception as e:
    print(f"알 수 없는 오류가 발생했습니다: {e}")

7. 마무리

이번 포스팅에서는 Python의 예외 처리 방법에 대해 알아보았습니다. 예외 처리는 프로그램의 안정성을 높이는 중요한 요소이므로, 다양한 상황에서 예외를 적절히 처리하는 방법을 익혀두는 것이 좋습니다. 다음 포스팅에서는 더 심화된 Python 주제를 다룰 예정입니다.

이 포스팅이 Python을 처음 접하는 분들에게 도움이 되길 바랍니다.

다음 이전