안녕하세요, mj입니다. 오늘은 파이썬에서 예외 처리 방법에 대해 알아보겠습니다. 프로그래밍을 하다 보면 예상치 못한 오류가 발생하는 경우가 많습니다. 이러한 오류를 적절하게 처리하지 않으면 프로그램이 중단되거나, 심각한 문제를 일으킬 수 있습니다. 그래서 우리는 try-except 문을 사용하여 안전한 코드를 작성해야 합니다.
try-except 문은 다음과 같은 기본 구조를 가집니다:
try: # 위험한 코드 except ExceptionType: # 예외 처리 코드
위의 구조에서 try
블록 안에 위험한 코드를 작성하고, except
블록에서는 해당 코드에서 발생할 수 있는 예외를 처리합니다.
0으로 나누는 경우 발생하는 ZeroDivisionError
를 처리하는 예시입니다.
try: result = 10 / 0 except ZeroDivisionError: print("0으로 나눌 수 없습니다.")
출력 결과: 0으로 나눌 수 없습니다.
숫자가 아닌 값을 정수로 변환할 때 발생하는 ValueError
를 처리하는 예시입니다.
try: number = int("문자열") except ValueError: print("정수로 변환할 수 없습니다.")
출력 결과: 정수로 변환할 수 없습니다.
존재하지 않는 파일을 열 때 발생하는 FileNotFoundError
를 처리하는 예시입니다.
try: with open("없는파일.txt", "r") as file: content = file.read() except FileNotFoundError: print("파일을 찾을 수 없습니다.")
출력 결과: 파일을 찾을 수 없습니다.
리스트의 인덱스 범위를 초과할 때 발생하는 IndexError
를 처리하는 예시입니다.
my_list = [1, 2, 3] try: print(my_list[5]) except IndexError: print("인덱스 범위를 초과했습니다.")
출력 결과: 인덱스 범위를 초과했습니다.
딕셔너리에 없는 키를 조회할 때 발생하는 KeyError
를 처리하는 예시입니다.
my_dict = {"a": 1, "b": 2} try: print(my_dict["c"]) except KeyError: print("존재하지 않는 키입니다.")
출력 결과: 존재하지 않는 키입니다.
한 try
블록에서 여러 예외를 처리할 수도 있습니다. 예를 들어:
try: x = int(input("숫자를 입력하세요: ")) result = 10 / x except (ValueError, ZeroDivisionError) as e: print("입력 오류:", e)
위 예제는 사용자가 숫자가 아닌 값을 입력하거나 0을 입력했을 때 모두 처리할 수 있습니다.
우리는 raise
문을 사용하여 사용자 정의 예외를 발생시킬 수 있습니다. 예를 들어:
def check_age(age): if age < 0: raise ValueError("나이는 0보다 작을 수 없습니다.") print("입력한 나이:", age) try: check_age(-1) except ValueError as e: print(e)
출력 결과: 나이는 0보다 작을 수 없습니다.
이상으로 파이썬의 예외 처리 방법에 대해 알아보았습니다. try-except 문을 사용하면 코드의 안전성을 높이고, 예외 상황에서도 프로그램이 중단되지 않도록 할 수 있습니다. 다양한 예제를 통해 이해를 돕기 위해 노력했으니, 실제로 코드에 적용해 보시기 바랍니다. 감사합니다!