728x90
예외 처리는 프로그램의 안정성과 신뢰성을 높이기 위한 핵심 요소입니다. 단순히 try-except 블록을 사용하는 것에서 더 나아가, 예외 처리 패턴을 효과적으로 적용하고, 코드 중복을 줄이는 리팩토링 기법을 이해하면 더욱 견고한 코드를 작성할 수 있습니다.
● 기본적인 예외 처리 구조
파이썬의 예외 처리는 try
, except
, else
, finally
블록을 조합하여 사용할 수 있습니다.
try:
result = 10 / x
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
else:
print("정상적으로 실행되었습니다.")
finally:
print("항상 실행되는 블록입니다.")
else
블록은 예외가 발생하지 않았을 때만 실행되며, finally
는 예외 유무와 관계없이 항상 실행됩니다.
● 예외 처리 리팩토링 패턴
- 중복된 try-except 제거: 반복되는 코드에 대해 공통 함수로 분리합니다.
- 구체적인 예외만 처리:
except Exception
처럼 포괄적 예외 처리 대신, 발생 가능한 예외를 명확히 지정합니다. - 예외 발생을 로직 분기 대신 사용하지 않기: 예외는 예외 상황일 때만 사용하고, 일반 흐름 제어에는 조건문을 사용합니다.
● 예외 처리 함수 분리 예시
def safe_divide(a, b):
try:
return a / b
except ZeroDivisionError:
return None
result = safe_divide(10, 0)
if result is None:
print("잘못된 연산입니다.")
이처럼 예외 처리 코드를 함수로 감싸면 재사용성과 가독성이 모두 향상됩니다.
● 로깅과 함께 사용하는 예외 처리
예외가 발생했을 때 단순히 무시하거나 출력만 하지 말고, logging
모듈을 활용하여 오류 로그를 기록하는 것이 좋습니다.
import logging
logging.basicConfig(level=logging.ERROR)
try:
1 / 0
except ZeroDivisionError as e:
logging.error("ZeroDivisionError 발생: %s", e)
● 마무리
예외 처리는 단순한 문법을 넘어, 프로그램 전체의 안정성과 품질을 결정짓는 중요한 요소입니다. 일관된 패턴과 리팩토링 전략을 통해 예외를 효과적으로 처리하고, 유지보수가 쉬운 코드를 작성하는 것이 중요합니다.
728x90
'프로그래밍언어 > 파이썬[중급]' 카테고리의 다른 글
[파이썬][중급] Chapter09. 일급 객체와 클로저 (0) | 2025.05.18 |
---|---|
[파이썬][중급] Chapter08. contextlib와 with문 커스터마이징 (0) | 2025.05.18 |
[파이썬][중급] Chapter06. 사용자 정의 예외 클래스 (0) | 2025.05.18 |
[파이썬][중급] Chapter05. 매직 메서드(__str__, __eq__, __lt__ 등) (0) | 2025.05.18 |
[파이썬][중급] Chapter04. 다중 상속과 MRO 이해 (0) | 2025.05.18 |