본문 바로가기
Python 문법/Python 기본 문법(3.10 기준)

[python3.10 기본] 9. 예외 처리

by cogito21_python 2024. 7. 1.
반응형

9.1 try, except, else, finally 구문

예외 처리는 try 블록을 사용하여 시도하고, except 블록을 사용하여 예외를 처리합니다. 또한, elsefinally 블록을 사용할 수도 있습니다.

 

try와 except: try 블록 내에서 오류가 발생하면 except 블록이 실행됩니다.

try:
    x = 10 / 0
except ZeroDivisionError:
    print("Division by zero is not allowed.")

else: try 블록이 성공적으로 실행되면 else 블록이 실행됩니다.

try:
    x = 10 / 2
except ZeroDivisionError:
    print("Division by zero is not allowed.")
else:
    print("Division successful.")

finally: 예외 발생 여부에 상관없이 항상 실행됩니다.

try:
    x = 10 / 0
except ZeroDivisionError:
    print("Division by zero is not allowed.")
finally:
    print("This block is always executed.")

9.2 예외 발생시키기 (raise)

파이썬에서는 raise 키워드를 사용하여 강제로 예외를 발생시킬 수 있습니다.

def divide(a, b):
    if b == 0:
        raise ValueError("Division by zero is not allowed.")
    return a / b

try:
    result = divide(10, 0)
except ValueError as e:
    print(e)

9.3 사용자 정의 예외

사용자 정의 예외를 만들려면 기본 예외 클래스(Exception)를 상속받아 새로운 예외 클래스를 정의합니다.

class CustomError(Exception):
    def __init__(self, message):
        self.message = message
        super().__init__(self.message)

try:
    raise CustomError("This is a custom error.")
except CustomError as e:
    print(e)

예외 처리 예제

다음은 예외 처리를 사용하여 파일을 읽는 예제입니다. 파일이 존재하지 않으면 예외를 발생시키고, 예외를 처리하여 사용자에게 적절한 메시지를 출력합니다.

def read_file(filename):
    try:
        with open(filename, "r") as file:
            return file.read()
    except FileNotFoundError:
        print(f"The file '{filename}' does not exist.")
    except Exception as e:
        print(f"An error occurred: {e}")
    finally:
        print("Execution completed.")

content = read_file("example.txt")

 

반응형