본문 바로가기
파이썬기초(Python Basic)

파이썬의 Try-Except 구문 사용법 및 예제

by 친절한에릭 2023. 5. 1.

안녕하세요! 오늘은 파이썬에서의 예외 처리 방법 중 하나인 try-except 구문에 대해 알아보려 합니다. 파이썬에서 예외 처리는 프로그램 실행 중 발생할 수 있는 에러를 다루는 데 도움을 줍니다. try-except 구문은 코드가 예외를 발생시킬 가능성이 있는 부분을 실행하면서 발생한 예외를 처리하는 데 사용됩니다.

기본적인 try-except 구문 사용법

try-except 구문의 기본 구조는 다음과 같습니다.

try:
    # 예외가 발생할 수 있는 코드
except 예외타입:
    # 예외 발생 시 실행할 코드

 

 

Try-except 구문 예제

이제 간단한 예제로 try-except 구문을 사용해봅시다.

예제 1: 나눗셈

다음 코드는 두 숫자를 나누는 코드입니다. 숫자 0으로 나눌 경우, "ZeroDivisionError"가 발생합니다.

pythonCopy code
try:
    num1 = int(input("첫 번째 숫자를 입력하세요: "))
    num2 = int(input("두 번째 숫자를 입력하세요: "))
    result = num1 / num2
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
else:
    print("결과: ", result)

예제 2: 파일 처리

다음 코드는 파일을 열어서 내용을 읽어오는 코드입니다. 파일이 존재하지 않을 경우, "FileNotFoundError"가 발생합니다.

filename = "example.txt"

try:
    with open(filename, 'r') as file:
        contents = file.read()
except FileNotFoundError:
    print(f"{filename} 파일을 찾을 수 없습니다.")
else:
    print(contents)

try-except 구문에 여러 개의 예외 처리하기

try-except 구문에서는 여러 개의 예외를 처리할 수도 있습니다. 이때는 except 문을 여러 번 사용하거나, 한 줄에 여러 개의 예외 타입을 적어줄 수 있습니다.

예제 3: 여러 개의 예외 처리

다음 코드는 사용자로부터 입력받은 숫자를 제곱하는 코드입니다. 여러 가지 예외가 발생할 수 있습니다.

try:
    num = int(input("정수를 입력하세요: "))
    result = num ** 2
except ValueError:
    print("정수가 아닌 값이 입력되었습니다.")
except TypeError:
    print("올바른 데이터 타입이 아닙니다.")
except Exception as e:
    print(f"기타 에러가 발생했습니다: {e}")
else:
    print("결과: ", result)

위의 코드에서는 ValueError, TypeError, 그리고 그 외 모든 예외를 처리하고 있습니다.

try-except 구문을 사용하면 프로그램이 예외 발생 시 중

단순히 종료되지 않고 적절한 메시지를 출력한 후 계속 실행될 수 있습니다. 이를 통해 사용자에게 더 나은 경험을 제공할 수 있습니다.

try-except-else-finally 구문

try-except 구문에는 else와 finally 절을 추가할 수도 있습니다. else 절은 try 블록에서 예외가 발생하지 않을 경우 실행되는 코드를 작성하는 데 사용됩니다. finally 절은 예외 발생 여부와 관계없이 항상 실행되는 코드를 작성하는 데 사용됩니다.

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

예제 4: try-except-else-finally 사용

다음 코드는 파일을 열어서 내용을 읽어오는 코드입니다. 파일이 존재하지 않을 경우, "FileNotFoundError"가 발생합니다.

filename = "example.txt"

try:
    with open(filename, 'r') as file:
        contents = file.read()
except FileNotFoundError:
    print(f"{filename} 파일을 찾을 수 없습니다.")
else:
    print("파일을 성공적으로 읽었습니다.")
    print(contents)
finally:
    print("프로그램 종료")

위 코드에서 else 절은 파일을 성공적으로 읽었을 때 실행되고, finally 절은 프로그램 종료 메시지를 출력합니다.

대표적인 예외 발생 경우

1. ZeroDivisionError: 숫자를 0으로 나누려 할 때 발생합니다.

result = 10 / 0

2. FileNotFoundError: 존재하지 않는 파일을 여는 경우 발생합니다.

with open("nonexistent_file.txt", 'r') as file:
    content = file.read()

3. TypeError: 잘못된 자료형을 사용할 때 발생합니다.

result = "hello" + 3

4. ValueError: 올바르지 않은 값이 사용되는 경우 발생합니다.

int("hello")

5. NameError: 존재하지 않는 변수나 함수를 사용할 때 발생합니다.

print(nonexistent_variable)

6. IndexError: 리스트의 범위를 벗어난 인덱스에 접근할 때 발생합니다.

my_list = [1, 2, 3]
print(my_list[3])

예외 발생시 출력하기

try-except 구문을 사용하여 발생한 예외를 출력하려면, 다음과 같이 작성합니다.

try:
    # 예외가 발생할 수 있는 코드
except Exception as e:
    print(f"예외가 발생했습니다: {e}")

예를 들어, 숫자를 0으로 나누는 경우를 처리하려면 다음과 같이 작성할 수 있습니다.

try:
    result = 10 / 0
except Exception as e:
    print(f"예외가 발생했습니다: {e}")

사용자 정의 예외 발생시키기

사용자가 직접 예외를 발생시키고 싶다면, raise 키워드를 사용하여 원하는 예외를 발생시킬 수 있습니다.

raise 예외타입("에러 메시지")

예를 들어, 나이가 음수인 경우에 예외를 발생시키려면 다음과 같이 작성할 수 있습니다.

age = -1

if age < 0:
    raise ValueError("나이는 음수일 수 없습니다.")

이러한 사용자 정의 예외를 처리하려면, try-except 구문을 사용하여 해당 예외를 처리할 수 있습니다.

try:
    if age < 0:
        raise ValueError("나이는 음수일 수 없습니다.")
except ValueError as e:
	print(f"예외가 발생했습니다: {e}")

또한, 사용자가 직접 예외 클래스를 만들어서 사용할 수도 있습니다. 이때는 파이썬의 기본 예외 클래스인 `Exception` 클래스를 상속받아 사용합니다.

예를 들어, 나이가 음수일 경우에 발생하는 사용자 정의 예외 클래스를 작성해봅시다.

class NegativeAgeError(Exception):
    def __init__(self, age):
        self.age = age

    def __str__(self):
        return f"나이는 음수일 수 없습니다. 입력한 나이: {self.age}"

이제 위에서 작성한 사용자 정의 예외 클래스를 사용하여 나이가 음수일 때 예외를 발생시키고 처리해봅시다.

try:
    age = -1
    if age < 0:
        raise NegativeAgeError(age)
except NegativeAgeError as e:
    print(f"예외가 발생했습니다: {e}")

정리

오늘 배운 내용을 정리해보면 다음과 같습니다.

  1. try-except 구문은 예외 처리를 위해 사용됩니다.
  2. 여러 개의 예외를 처리하기 위해서는 except 문을 여러 번 사용하거나, 한 줄에 여러 개의 예외 타입을 적어줄 수 있습니다.
  3. try-except 구문에는 else와 finally 절을 추가할 수 있습니다. else 절은 예외가 발생하지 않았을 때 실행되는 코드를 작성하는 데 사용되며, finally 절은 예외 발생 여부와 관계없이 항상 실행되는 코드를 작성하는 데 사용됩니다.
  4. 대표적인 예외 발생 경우
  5. 예외 발생 시 출력
  6. 사용자 정의 예외

이상으로 파이썬의 try-except 구문 사용법에 대한 설명을 마칩니다. 이 포스트를 통해 파이썬에서 예외 처리를 어떻게 할 수 있는지 이해하셨기를 바랍니다. . 파이썬에서 대표적으로 발생하는 예외들과 예외 발생 원인, 예외 발생시 출력하는 방법, 그리고 사용자가 직접 예외를 발생시키는 방법을 알아보았습니다.  앞으로 프로그램을 작성하시면서 발생할 수 있는 예외를 미리 생각하고 적절한 예외 처리를 사용하여 더 안정적인 코드를 작성하시길 바랍니다.

 

파이썬예외처리

댓글