[Python] try, except 문에서 Exception이 여러 개일 경우

2024. 4. 17. 15:02·개발 (Development)/Python

Exception을 처리하는 코드에 중복된 동작이 많아서 단순화가 필요했다. 따라서 아래의 과정을 통해 단순화했다.

 

기존 코드

# 기존 코드
try:
    # 예외 발생 가능한 코드 영역
    print("test")
except socket.error as e:
    send_kafka_message(self, empty_dict)
    self.logger.error(f":: Socket error occurred: {e}")
    self.close_socket()
    self.initialize_socket()
    return None, meta
except Exception as e:
    send_kafka_message(self, empty_dict)
    self.logger.error(f":: An error occurred: {str(e)}")
    return None, meta

 

수정 코드

# 수정 코드
try:
    # 예외 발생 가능한 코드 영역
    print("test")
except (socket.error, Exception) as e:
    send_kafka_message(self, empty_dict)
    error_message = f":: Socket error occurred: {e}" if isinstance(e, socket.error) else f":: An error occurred: {str(e)}"
    self.logger.error(error_message)
    if isinstance(e, socket.error):
        self.close_socket()
        self.initialize_socket()
    return None, meta

 

이렇게 간략화된 코드는 먼저 소켓 오류(socket.error)와 일반적인 예외(Exception)를 모두 처리한다. 오류가 발생하면 'send_kafka_message' 함수(Broker로 카프카 메시지를 Send 하는 기능을 하는 함수)를 사용해 Kafka 메시지를 전송하고 로그를 남기며, 소켓 오류인 경우 소켓을 닫고 다시 초기화한다. 최종적으로 None과 meta를 반환한다.

 

※ 참고

 

initialize_socket

def initialize_socket(self):
    self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.socket.settimeout(1)  # Set timeout to 1 second

    try:
        self.socket.connect((self.server_ip, self.server_port))
        self.logger.info("Connection established successfully")

    except socket.error as e:
        self.logger.error(f"Socket error occurred during initialization: {e}")

 

close_socket

def close_socket(self):
    try:
        self.socket.close()
    except socket.error as e:
        self.logger.error(f"Error closing socket: {e}")
반응형

'개발 (Development) > Python' 카테고리의 다른 글

[Python] 패키지 설치 SSL Error 해결  (0) 2025.01.05
[Python] 데코레이터  (0) 2024.04.17
[Python] List Comprehension  (0) 2024.04.17
[Python] 리눅스 환경에서 윈도우 환경으로 파일 저장 (SMB 프로토콜)  (0) 2024.04.12
[Python] 실행 시간 측정  (0) 2024.04.02
'개발 (Development)/Python' 카테고리의 다른 글
  • [Python] 패키지 설치 SSL Error 해결
  • [Python] 데코레이터
  • [Python] List Comprehension
  • [Python] 리눅스 환경에서 윈도우 환경으로 파일 저장 (SMB 프로토콜)
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (147)
      • 개발 (Development) (98)
        • Algorithm (1)
        • Angular (1)
        • AWS (3)
        • DeepSeek (2)
        • Docker (3)
        • Git (3)
        • Java (13)
        • JavaScript (4)
        • Kafka (4)
        • Kubernetes (2)
        • Linux (5)
        • PostgreSQL (29)
        • Python (13)
        • React (2)
        • TypeScript (3)
        • Vue.js (5)
        • General (5)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (12)
        • ADsP (2)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (8)
      • 기타 (Others) (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    PostgreSQL
    MyBatis
    deepseek
    hypertable
    오답노트
    Linux master
    master
    Kafka
    정보처리기사
    백준자바
    python
    Linux
    javascript
    백준알고리즘
    백준온라인저지
    리눅스 마스터 2급 2차
    chat GPT
    자바
    백준
    Vue.js
    AWS
    Vue
    리눅스 마스터 2급
    Kubernetes
    docker
    typescript
    java
    리눅스 마스터
    DevOps
    JSON
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Python] try, except 문에서 Exception이 여러 개일 경우
상단으로

티스토리툴바