본문 바로가기
  • NerdCodX Blog
파이썬(Python)

Python Day 10: 파이썬 예외 처리 - 오류를 안전하게 관리하는 방법

by NerdCodeX 2025. 1. 29.

 

1. 예외 처리란 무엇인가요?

안녕하세요! 오늘은 파이썬의 중요한 기능 중 하나인 **예외 처리(Exception Handling)**에 대해 알아보겠습니다. 프로그래밍에서는 다양한 오류가 발생할 수 있으며, 이러한 오류를 처리하지 않으면 프로그램이 중단될 수 있습니다. 파이썬의 try, except, finally 구문을 사용하면 프로그램이 예외 상황에서도 안정적으로 실행되도록 설계할 수 있습니다. 이번 글에서는 예외 처리의 기본 구조와 사용법, 안전한 사용자 입력을 구현하는 실습을 다뤄보겠습니다.

 


2. try, except, finally 구조

기본 구조

예외 처리는 오류가 발생할 가능성이 있는 코드를 try 블록에 작성하고, 예외가 발생했을 때의 대처 방법을 except 블록에 정의합니다.

try:
    실행할 코드
except 예외 유형:
    예외 처리 코드
finally:
    항상 실행할 코드 (선택 사항)

예제 1: 기본 예외 처리

try:
    num = int(input("숫자를 입력하세요: "))
    print(f"입력한 숫자는 {num}입니다.")
except ValueError:
    print("유효하지 않은 숫자입니다.")

 

finally 블록

finally 블록은 예외 발생 여부와 상관없이 항상 실행됩니다. 파일 닫기, 리소스 해제 등의 작업에 유용합니다.

 

예제 2: finally 사용하기

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

3. 오류 메시지 출력과 처리

예외 메시지 확인하기

except 블록에서 예외 객체를 변수로 받아 오류 메시지를 출력할 수 있습니다.

예제 3: 예외 메시지 출력하기

try:
    result = 10 / 0
except ZeroDivisionError as e:
    print(f"오류 발생: {e}")

출력:

오류 발생: division by zero

 

다중 예외 처리

여러 종류의 예외를 각각 처리할 수 있습니다.

예제 4: 다중 예외 처리

try:
    num = int(input("숫자를 입력하세요: "))
    result = 10 / num
    print(f"결과: {result}")
except ValueError:
    print("유효하지 않은 숫자입니다.")
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")

 

모든 예외 처리하기

예외 유형을 지정하지 않으면 모든 예외를 처리할 수 있습니다. 다만, 특정 예외를 명시적으로 처리하는 것이 더 권장됩니다.

예제 5: 모든 예외 처리

try:
    num = int(input("숫자를 입력하세요: "))
    print(10 / num)
except Exception as e:
    print(f"오류 발생: {e}")

4. 실습: 안전한 사용자 입력 받기

문제 설명

사용자로부터 정수를 입력받아 안전하게 처리하는 프로그램을 작성합니다. 입력값이 유효하지 않으면 오류 메시지를 출력하고, 유효한 입력값이 주어질 때까지 반복합니다.

코드

while True:
    try:
        num = int(input("정수를 입력하세요: "))
        print(f"입력한 정수는 {num}입니다.")
        break
    except ValueError:
        print("유효하지 않은 입력입니다. 다시 시도하세요.")

출력 예시

정수를 입력하세요: abc
유효하지 않은 입력입니다. 다시 시도하세요.
정수를 입력하세요: 123
입력한 정수는 123입니다.

 


5. 실습 과제

  1. 숫자 나누기 프로그램
    • 두 숫자를 입력받아 나눈 결과를 출력하세요. 0으로 나누는 경우 오류 메시지를 출력하고 다시 입력받으세요.
    while True:
        try:
            num1 = int(input("첫 번째 숫자를 입력하세요: "))
            num2 = int(input("두 번째 숫자를 입력하세요: "))
            print(f"결과: {num1 / num2}")
            break
        except ZeroDivisionError:
            print("0으로 나눌 수 없습니다. 다시 입력하세요.")
        except ValueError:
            print("유효하지 않은 입력입니다. 다시 시도하세요.")
    
  2. 파일 읽기 프로그램
    • 사용자로부터 파일 이름을 입력받아 파일 내용을 출력하세요. 파일이 없을 경우 예외 처리로 오류 메시지를 출력하세요.
    try:
        filename = input("파일 이름을 입력하세요: ")
        with open(filename, "r") as file:
            print(file.read())
    except FileNotFoundError:
        print("파일을 찾을 수 없습니다.")
    
  3. 양수 입력받기
    • 사용자가 양수를 입력할 때까지 반복해서 입력을 요청하는 프로그램을 작성하세요.
    while True:
        try:
            num = int(input("양수를 입력하세요: "))
            if num > 0:
                print(f"입력한 양수는 {num}입니다.")
                break
            else:
                print("양수가 아닙니다. 다시 입력하세요.")
        except ValueError:
            print("유효하지 않은 입력입니다. 다시 시도하세요.")
    

 

예외 처리는 프로그램의 안정성과 신뢰성을 높이는 중요한 기술입니다. 이 글을 통해 try, except, finally 구조와 다양한 예외 처리 방법을 배우셨을 겁니다. 실습과 과제를 통해 배운 내용을 직접 적용하며 코딩 실력을 키워보세요. 질문이나 의견이 있다면 댓글로 남겨주세요. 여러분의 코딩 여정을 응원합니다!

 

 

 

Python Day 9: 중첩 루프와 break/continue로 반복문 제어하기

1. 중첩 루프란 무엇인가요?안녕하세요! 오늘은 파이썬에서 반복문 내에 또 다른 반복문을 사용하는 중첩 루프(Nested Loop)와 반복문의 흐름을 제어할 수 있는 break와 continue에 대해 알아보겠습니다

nerdcodex.tistory.com

 

 

 

Python Day 8: 파이썬 반복문 (while) - 유연한 반복 작업 이해하기

1. while 반복문이란 무엇인가요?안녕하세요! 오늘은 파이썬의 또 다른 반복문인 while 반복문에 대해 알아보겠습니다. while 반복문은 조건이 참(True)인 동안 코드를 반복 실행합니다. 조건에 따라

nerdcodex.tistory.com