고양이 여름이의 지식채널

[Python] 파이썬 예외처리 (try-except-finally, rasie) 본문

Programming/Python

[Python] 파이썬 예외처리 (try-except-finally, rasie)

썸머캣 2023. 3. 7. 22:56

이번에는 파이썬에서 예외처리를 하는 방법에 대해 알아보겠습니다.

 

try-except

파이썬에서 예외처리는 try-except 구문을 사용하여 처리할 수 있습니다. 예를 들어, 사용자로부터 숫자를 입력받아 0으로 나누는 예외를 처리하는 코드를 작성해보겠습니다.

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

위 코드에서는 try 구문을 사용하여 사용자로부터 두 개의 숫자를 입력받아 나누기 연산을 수행합니다. 이때 num2가 0인 경우 ZeroDivisionError 예외가 발생하게 됩니다. 이 예외를 except 구문을 사용하여 처리하고, 나머지 경우에는 else 구문을 사용하여 결과를 출력합니다.

 

try-except-finally

파이썬에서는 try-except-finally 구문을 사용하여 예외 발생 여부와 상관없이 반드시 실행되는 코드를 작성할 수 있습니다. 예를 들어, 파일을 열고 닫는 작업을 수행하는 코드를 작성해보겠습니다.

try:
    file = open("test.txt", "w")
    file.write("Hello, World!")
except:
    print("파일을 열 수 없습니다.")
finally:
    file.close()

위 코드에서는 try 구문을 사용하여 "test.txt" 파일을 열고, "Hello, World!" 문자열을 파일에 씁니다. 이때 파일을 열 수 없는 경우 except 구문이 실행되어 예외 메시지를 출력합니다. 그리고 finally 구문에서는 파일을 항상 닫아주는 코드를 작성하여 파일 자원을 확실히 해제합니다.

 

반응형

 

raise

파이썬에서는 raise 구문을 사용하여 예외를 강제로 발생시킬 수 있습니다. 예를 들어, 사용자로부터 입력받은 숫자가 0 이하인 경우 예외를 발생시키는 코드를 작성해보겠습니다.

try:
    num = int(input("양수를 입력하세요: "))
    if num <= 0:
        raise ValueError("양수를 입력하세요.")
except ValueError as e:
    print(e)

위 코드에서는 try 구문을 사용하여 사용자로부터 숫자를 입력받습니다. 이때 입력받은 숫자가 0 이하인 경우 ValueError 예외를 발생시키고, except 구문에서 예외 메시지를 출력합니다.

 

예외 처리의 중첩

파이썬에서는 예외 처리를 중첩하여 작성할 수 있습니다. 이렇게 중첩된 예외 처리는 여러 가지 예외 상황을 처리할 때 유용합니다. 예를 들어, 파일을 열고 닫는 작업에서 파일이 존재하지 않는 경우와 파일을 열지 못하는 경우에 대해 예외 처리를 중첩하여 작성해보겠습니다.

try:
    file = open("test.txt", "r")
    try:
        content = file.read()
        file.close()
    except:
        file.close()
        raise
except FileNotFoundError:
    print("파일이 존재하지 않습니다.")
except:
    print("파일을 열 수 없습니다.")

위 코드에서는 try-except 구문을 중첩하여 파일을 열고, 파일 내용을 읽어온 후 파일을 닫습니다. 이때 파일이 존재하지 않는 경우와 파일을 열지 못하는 경우에 대해 각각 예외 처리를 작성합니다. 이렇게 중첩된 예외 처리는 파일을 다루는 등 여러 가지 예외 상황을 처리할 때 유용하게 사용할 수 있습니다.

 

사용자 정의 예외처리

파이썬에서는 사용자가 직접 예외를 정의할 수 있습니다. 이러한 사용자 정의 예외는 기존의 예외와 마찬가지로 raise 구문을 사용하여 발생시킬 수 있습니다. 예를 들어, 사용자로부터 입력받은 숫자가 10보다 큰 경우 사용자 정의 예외를 발생시키는 코드를 작성해보겠습니다.

class TooBigNumberException(Exception):
    def __init__(self, num):
        self.num = num
    def __str__(self):
        return f"{self.num}은(는) 10보다 큰 숫자입니다."

try:
    num = int(input("숫자를 입력하세요: "))
    if num > 10:
        raise TooBigNumberException(num)
except TooBigNumberException as e:
    print(e)

위 코드에서는 TooBigNumberException 클래스를 정의하여 사용자 정의 예외를 생성합니다. 이때 __init__ 메소드를 사용하여 예외에 대한 정보를 초기화하고, __str__ 메소드를 사용하여 예외 메시지를 반환합니다. 그리고 try-except 구문에서는 사용자로부터 숫자를 입력받아 10보다 큰 경우 TooBigNumberException 예외를 발생시키고, except 구문에서 예외 메시지를 출력합니다.

 

 

이러한 예외처리 기능을 적절히 활용하면 파이썬 코드의 안정성과 유지보수성을 높일 수 있습니다.

 


 

[Python] 파이썬 데이터 타입 (리스트, 튜플, 딕셔너리)

 

[Python] 파이썬 데이터 타입 (리스트, 튜플, 딕셔너리)

파이썬에서는 다양한 데이터 타입을 제공합니다. 대표적인 데이터 타입으로는 리스트, 튜플, 딕셔너리가 있습니다. 리스트 (list) 리스트는 대괄호 [ ] 로 둘러싸인 값들의 목록입니다. 각 값들은

summer-cat93.tistory.com

 

 

728x90
반응형
Comments