본문 바로가기
실버를 위한 코딩/파이썬 연습

[파이썬 연습] 예외 처리 작성하기

by forSilver 2024. 8. 10.
반응형

예외 처리 작성하기

예외 처리는 프로그램 실행 중 발생할 수 있는 오류를 처리하여 프로그램이 중단되지 않도록 하는 방법입니다. 파이썬에서는 try, except, else, finally 키워드를 사용하여 예외 처리를 할 수 있습니다.

기본 구조

try:
    # 예외가 발생할 가능성이 있는 코드
except 예외타입 as e:
    # 예외가 발생했을 때 실행할 코드
else:
    # 예외가 발생하지 않았을 때 실행할 코드
finally:
    # 예외 발생 여부와 관계없이 항상 실행할 코드

예제

1. 기본적인 예외 처리

try:
    x = int(input("숫자를 입력하세요: "))
    y = int(input("나눌 숫자를 입력하세요: "))
    result = x / y
except ValueError:
    print("잘못된 입력입니다. 숫자를 입력해야 합니다.")
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
else:
    print("결과는:", result)
finally:
    print("프로그램이 종료되었습니다.")

2. 사용자 정의 예외

class NegativeNumberError(Exception):
    pass

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

try:
    num = int(input("양수를 입력하세요: "))
    check_positive(num)
except NegativeNumberError as e:
    print(e)
except ValueError:
    print("잘못된 입력입니다. 숫자를 입력해야 합니다.")
else:
    print("입력한 숫자는 양수입니다.")
finally:
    print("프로그램이 종료되었습니다.")

실습 과제

  1. 사용자로부터 두 개의 숫자를 입력받아 나눗셈을 수행하는 프로그램을 작성하세요. 단, 입력값이 잘못되었을 때와 0으로 나누었을 때 각각에 대해 적절한 예외 처리를 하세요.
  2. 리스트의 인덱스를 입력받아 해당 인덱스의 요소를 출력하는 프로그램을 작성하세요. 단, 인덱스가 잘못되었을 때와 입력값이 잘못되었을 때 각각에 대해 적절한 예외 처리를 하세요.
  3. 파일을 열고 읽는 프로그램을 작성하세요. 파일이 존재하지 않을 때와 파일을 읽는 중에 발생하는 오류에 대해 적절한 예외 처리를 하세요.

실습 과제 답안

1. 나눗셈 프로그램

try:
    x = int(input("첫 번째 숫자를 입력하세요: "))
    y = int(input("두 번째 숫자를 입력하세요: "))
    result = x / y
except ValueError:
    print("잘못된 입력입니다. 숫자를 입력해야 합니다.")
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
else:
    print("결과는:", result)
finally:
    print("프로그램이 종료되었습니다.")

2. 리스트 인덱스 접근 프로그램

lst = [10, 20, 30, 40, 50]

try:
    index = int(input("리스트의 인덱스를 입력하세요: "))
    print(f"리스트의 {index}번째 요소는 {lst[index]}입니다.")
except ValueError:
    print("잘못된 입력입니다. 정수를 입력해야 합니다.")
except IndexError:
    print("잘못된 인덱스입니다. 유효한 인덱스를 입력하세요.")
finally:
    print("프로그램이 종료되었습니다.")

3. 파일 읽기 프로그램

try:
    filename = input("읽을 파일 이름을 입력하세요: ")
    with open(filename, 'r') as file:
        content = file.read()
        print(content)
except FileNotFoundError:
    print("파일을 찾을 수 없습니다.")
except IOError:
    print("파일을 읽는 중에 오류가 발생했습니다.")
finally:
    print("프로그램이 종료되었습니다.")

이러한 예제들을 통해 예외 처리 방법을 익히고 프로그램의 안정성을 높일 수 있습니다. 예외 처리를 적절히 사용하면 예상치 못한 오류로 인한 프로그램의 비정상 종료를 방지할 수 있습니다.