파이썬을 사용하다 보면 예상하지 못한 예외가 발생할 수 있습니다. 특히 외부 입력을 받거나 다양한 라이브러리를 사용할 때, 프로그램이 갑작스럽게 종료되지 않도록 모든 예외를 처리하고 싶은 경우가 있습니다. 이런 상황에서는 try-except 문을 활용해 모든 예외를 한 번에 처리할 수 있습니다. 이번 글에서는 Python에서 모든 예외를 잡는 방법과 그 예제 코드를 알아보겠습니다.
모든 예외를 처리할 수 있는 try-except 구문
try-except 문을 사용하면 특정 에러가 아닌 모든 에러를 잡을 수 있습니다.
방법도 아주 간단한데, 바로 except 구문에 Exception을 사용하시면 됩니다.
예외가 발생하면 Exception 클래스가 이를 캐치하고, 개발자는 발생한 예외의 메시지를 확인하거나 추가적인 처리를 할 수 있습니다.
코드 예시
다음은 모든 예외를 잡을 수 있는 try-except 구문 예제입니다:
try:
# 에러가 발생할 가능성이 있는 코드
x = int(input("숫자를 입력하세요: ")) # 정수가 아닌 값을 입력하면 ValueError 발생
result = 10 / x # 0을 입력하면 ZeroDivisionError 발생
print("결과:", result)
except Exception as e:
print(f"예외가 발생했습니다: {e}")
위 코드에서 사용자에게 숫자를 입력받아 계산하는 과정을 시도합니다. 여기서 ValueError나 ZeroDivisionError와 같은 다양한 예외가 발생할 수 있는데, 모든 예외를 except Exception as e: 구문에서 잡아내고 있습니다. 예외가 발생하면 e에 예외 메시지가 저장되므로, 이를 통해 어떤 오류가 발생했는지 파악할 수 있습니다.
Exception을 사용한 모든 예외 처리의 장단점
모든 예외를 잡는 방식은 작성한 코드가 어떤 오류를 내는지 모두 알기 어려운 상황에 편리합니다. 그러나 남용할 경우, 예상하지 못한 예외가 발생해도 이를 무시하거나 특정 문제를 찾기 어려워질 수 있습니다. 따라서 디버깅이 필요할 때는 특정 예외를 잡는 것이 좋고, 꼭 필요한 경우에만 모든 예외를 잡는 방식을 사용해야 합니다.
모든 예외를 잡을 때의 주의사항
Python에는 Exception보다 상위 클래스인 BaseException도 존재합니다. BaseException을 사용하면 시스템 종료나 키보드 인터럽트(KeyboardInterrupt) 같은 조금 더 시스템 단에 가까운 예외도 잡을 수 있지만, 일반적인 경우 Exception만 사용하는 것이 좋습니다. BaseException을 사용하게 되면 시스템 종료가 의도치 않게 방해될 수 있기 때문입니다.
try:
# 실행할 코드
except BaseException as e:
print(f"예상치 못한 오류: {e}")
'개발 > 💻 컴퓨터 공학' 카테고리의 다른 글
[Python] re 모듈로 문자열 처리하기 (3) | 2024.11.13 |
---|---|
[Python] Python은 난수를 어떻게 생성할까? (3) | 2024.10.29 |
[Python] 파이썬 GIL - Multiprocess vs Multithread (3) | 2024.10.29 |
[OS] Process(프로세스)란? (0) | 2024.09.02 |