파이썬 기초문법

파이썬 예외 처리하기: 프로그램 안정성을 높이는 방법

Family in August 2023. 3. 21. 11:42
반응형

프로그램이 동작하다 보면, 예상하지 못한 상황에서 오류가 발생할 수 있습니다.
이러한 오류는 프로그램의 안정성을 저하시키는 요소 중 하나이며, 사용자가 불편함을 느끼게 합니다.
이런 상황에서 파이썬에서 제공하는 예외 처리 기능을 사용하면, 오류 발생 시 적절한 조치를 취하여 프로그램의 안정성을 높일 수 있습니다.

예외 처리란?
예외 처리는 프로그램이 예기치 않은 상황에서도 오류 없이 안정적으로 동작할 수 있도록 해주는 기능입니다.
파이썬에서는 try-except문을 사용하여 예외 처리를 구현할 수 있습니다.
try블록 안에서 예외가 발생하면, except 블록에서 해당 예외를 처리하고 프로그램이 정상적으로 동작하도록 조치를 취할 수 있습니다.

예외 처리 방법
예외 처리를 위한 기본적인 방법은 다음과 같습니다.

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


try 블록 안에서 예외가 발생하면, except 블록이 실행됩니다.
except 블록은 예외 처리 코드를 포함하고 있으며, 해당 예외가 발생했을 때 실행됩니다.
예외 종류는 특정한 예외만 처리하도록 하기 위해 지정할 수 있습니다.
except 블록을 생략하면, 모든 예외를 처리합니다.
else 블록은 예외 처리 코드가 없으며, 해당 예외가 발생하지 않았을 때 실행됩니다.
finally 블록은 예외 발생 여부와 상관없이 항상 실행되는 코드를 포함하고 있습니다.

예외 처리 예제
다음은 예외 처리를 사용하는 예제입니다.
이 예제는 사용자로부터 숫자를 입력받아 2로 나눈 결과를 출력하는 코드입니다.
하지만 사용자가 0을 입력하면 ZeroDivisionError 예외가 발생합니다.
이 예외를 처리하는 코드를 작성해 보겠습니다.

try:
    a = int(input("Enter a number: "))
    b = int(input("Enter another number: "))
    c = a / b
    print("The result is:", c)
except ZeroDivisionError:
    print("Error: division by zero")


위 코드에서 a와 b 변수에 숫자를 입력받고, c 변수에 a를 b로 나눈 값을 할당합니다.
그리고 마지막으로 print() 함수를 사용하여 결과값 c를 출력합니다.

이 코드에서 발생할 수 있는 예외는 무엇일까요?
바로 ZeroDivisionError 예외입니다.
사용자가 0을 입력하면 b 변수에 0이 할당되고, c 변수에는 0으로 나눌 수 없는 값이 들어가게 됩니다.
이런 경우에는 프로그램이 강제로 종료되기 때문에 사용자 친화적이지 않습니다.

따라서, try-except 구문을 사용하여 예외 처리를 추가했습니다.
예외 처리는 try 블록 안에서 예외가 발생할 수 있는 코드를 작성하고, except 블록 안에서 예외 처리 코드를 작성합니다.
예외가 발생하면 프로그램이 try 블록을 벗어나 except 블록으로 이동하여 예외 처리 코드를 실행합니다.

위 코드에서는 ZeroDivisionError 예외가 발생할 경우 "Error: division by zero" 메시지를 출력하도록 예외 처리 코드를 작성했습니다.
이제 예외 처리가 추가된 코드를 실행해보겠습니다.

Enter a number: 10
Enter another number: 0
Error: division by zero


이번에는 0을 입력하였을 때 ZeroDivisionError 예외가 발생하지 않고, "Error: division by zero" 메시지가 출력된 것을 확인할 수 있습니다.
이제 예외 처리가 잘 동작하는 코드를 작성할 수 있게 되었습니다.

이번 글에서는 파이썬의 예외 처리에 대해 알아보았습니다.
궁금하신 부분이 있으시면 댓글 남겨주세요.

반응형