Skip to content

Commit bc3cbbf

Browse files
committed
feat: exception handling for conections
1 parent c593e9c commit bc3cbbf

2 files changed

Lines changed: 18 additions & 4 deletions

File tree

main.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
from signalduino.constants import SDUINO_CMD_TIMEOUT
1212
from signalduino.controller import SignalduinoController
13+
from signalduino.exceptions import SignalduinoConnectionError
1314
from signalduino.transport import SerialTransport, TCPTransport
1415
from signalduino.types import DecodedMessage
1516

@@ -156,8 +157,15 @@ def signal_handler(sig, frame):
156157
while True:
157158
time.sleep(1)
158159

160+
except SignalduinoConnectionError as e:
161+
# Wird ausgelöst, wenn die Verbindung beim Start fehlschlägt (z.B. falscher Port, Gerät nicht angeschlossen)
162+
logger.error(f"Verbindungsfehler: {e}")
163+
logger.error("Das Programm wird beendet.")
164+
controller.disconnect()
165+
sys.exit(1)
166+
159167
except Exception as e:
160-
logger.error(f"Ein Fehler ist aufgetreten: {e}", exc_info=True)
168+
logger.error(f"Ein unerwarteter Fehler ist aufgetreten: {e}", exc_info=True)
161169
controller.disconnect()
162170
sys.exit(1)
163171

signalduino/transport.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import logging
66
import socket
7+
from socket import gaierror
78
from typing import Optional
89

910
from .exceptions import SignalduinoConnectionError
@@ -91,9 +92,14 @@ def __init__(self, host: str, port: int, read_timeout: float = 0.5):
9192
self._buffer = bytearray()
9293

9394
def open(self) -> None:
94-
sock = socket.create_connection((self.host, self.port), timeout=5)
95-
sock.settimeout(self.read_timeout)
96-
self._sock = sock
95+
try:
96+
sock = socket.create_connection((self.host, self.port), timeout=5)
97+
sock.settimeout(self.read_timeout)
98+
self._sock = sock
99+
except (OSError, gaierror) as exc:
100+
# OSError fängt z.B. No route to host, Connection refused ab
101+
# gaierror fängt z.B. Name or service not known ab
102+
raise SignalduinoConnectionError(str(exc)) from exc
97103

98104
def close(self) -> None:
99105
if self._sock:

0 commit comments

Comments
 (0)