오늘은 파이썬에서 매우 중요한 주제인 예외 처리와 디버깅 방법에 대해서 알아보도록 하겠습니다.
1.예외 처리의 기본 : try-except 구분
파이썬에서 예외 처리의 기본은 try-except 구문입니다. 이 구문을 사용하면 프로그램 실행 중 발생할 수 있는 오류를 우아하게 처리할 수 있습니다.
try :
# 예외가 발생할 수 있는 코드
result = 10 / 0
except ZeroDivisionError:
print("0으로 나눌 수 없습니다")
이 예제에서는 0으로 나누려고 시도하지만, ZeroDivisionError가 발생하면 이를 잡아내고 적절한 메세지를 출력 합니다.
2.다양한 예외 처리하기
여러 종류의 예외를 처리하고 싶다면, 여러개의 except 블록을 사용하거나 괄호를 사용하여 여러 예외를 한 번에 처리할 수 있습니다.
try:
# 예외가 발생할 수 있는 코드
value = int(input("숫자를 입력하세요: "))
result = 10 / value
except (ValueError, ZeroDivisionError) as e:
print(f"오류 발생: {e}")
이 코드는 사용자의 입력 오류(ValueError)와 0으로 나누기 오류(ZeroDivisionError)를 모두 처리 합니다.
3.else와 finally 활용하기
try-except 구문에 else와 finally를 추가하면 더 세밀한 제어가 가능합니다.
try:
value = int(input("숫자를 입력하세요: "))
result = 10 / value
except ValueError:
print("올바른 숫자를 입력하세요.")
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
else:
print(f"결과: {result}")
finally:
print("프로그램을 종료합니다.")
else 블록은 예외가 발생하지 않았을 때 실행되고, finally 블록은 예외 발생 여부와 관계없이 항상 실행 됩니다.
4.사용자 정의 예외 만들기
특정 상황에 맞는 예외를 직접 정의 할 수 있습니다. 이는 프로그램의 특정 오류 상황을 더 명확하게 표현하는 데 도움이 됩니다.
class CustomError(Exception):
def __init__(self, message):
self.message = message
super().__init__(self.message)
try:
raise CustomError("사용자 정의 예외가 발생했습니다.")
except CustomError as e:
print(f"발생한 예외 메시지: {e.message}")
이렇게 하면 프로그램의 특정 상황에 맞는 예외를 만들고 처리 할 수 있습니다.
5.디버깅 기법 : print() 함수 활용
가장 기본적인 디버깅 방법은 print() 함수를 사용하여 변수의 값이나 프로그램의 실행 흐름을 확인하는 방법 입니다.
def calculate(a, b):
print(f"a: {a}, b: {b}") # 디버깅을 위한 출력
result = a / b
print(f"결과: {result}") # 디버깅을 위한 출력
return result
calculate(10, 2)
이 방법은 간단하지만, 코드에 많은 print() 문을 추가해야 하고 나중에 이를 제거해야 한다는 단점이 있습니다.
6.pdb를 이용한 고급 디버깅
파이썬의 내장 디버거인 pdb를 사용하면 더 강력한 디버깅이 가능 합니다.
import pdb
def complex_function(x, y):
result = x / y
pdb.set_trace() # 디버거 중단점 설정
return result
complex_function(10, 0)
7.IDE를 활용한 디버깅
PyCharm, Visual Studio Code 등의 통합 개발 환경(IDE)은 그래픽 인터페이스를 통해 더 편리한 디버깅 경험을 제공 합니다. 이러단 IDE에서는 중단점 설정, 변수 검사, 단계별 실행 등의 기능을 마우스 클릭만으로 쉽게 사용할 수 있습니다.
8.로깅을 이용한 디버깅
로깅은 프로그램의 실행 상태를 기록하는 방법으로, 디버깅에 매우 중요 합니다. 파이썬의 logging 모듈을 사용하면 다양한 레벨의 로그를 남길 수 있습니다.
import logging
logging.basicConfig(level=logging.DEBUG)
def divide(x, y):
logging.debug(f"x: {x}, y: {y}")
try:
result = x / y
except ZeroDivisionError:
logging.error("0으로 나누기 시도")
raise
logging.info(f"나눗셈 결과: {result}")
return result
divide(10, 2)
divide(10, 0)
9.traceback 모듈 활용하기
traceback 모듈은 예외 발생 시 상세한 스택 트레이스 정보를 제공 합니다. 이를 통해 예외가 발생한 정확한 위치와 원인을 파악할 수 있습니다.
import traceback
try:
1 / 0
except Exception as e:
print("예외 발생:")
print(traceback.format_exc())
이 코드는 예외가 발생했을 때 상세한 스택 트레이스를 출력 합니다. 이는 복잡한 프로그램에서 문제의 원인을 찾는데 매우 유용 합니다.
마무리
예외 처리와 디버깅은 파이썬 프로그래밍에서 매우 중요한 기술 입니다. 이 기술들을 잘 활용하면 더 안정적이고 유지보수가 쉬운 코드를 작성할 수 있습니다. 기본적인 try-except 구문부터 시작하여 pdf, IDE, 로깅, traceback 등 다양한 도구를 활용하여 여러분의 코드를 더욱 견고하게 만들어 보면 좋을 것 같습니다.
디버깅은 단순히 오류를 찾는 과정이 아니라, 코드의 동작을 더 깊이 이해하는 과정이기도 합니다. 따라서 디버깅 과정을 통해 여러분이 더 나은 프로그래머로 성장 할 수 있습니다.
'IT > Python' 카테고리의 다른 글
[Python] 파이썬 라이브러리 활용에 대해서 알아보자! (0) | 2025.01.10 |
---|---|
[Python] 파이썬 파일 입출력에 대해서 알아보자! (0) | 2025.01.10 |
[Python] 파이썬 모듈과 패키지 사용법 (0) | 2025.01.09 |
[Python] 파이썬 클래스와 객체지향 프로그램 기초 (0) | 2025.01.09 |
[Python] Python 함수 : 작성부터 활용까지 (0) | 2025.01.09 |