Exception handler p- added exceptions for JFJOCH, Aerotech and AareDB communication errors

This commit is contained in:
appleb_m committed 2026-03-25 13:21:02 +01:00
1 parent af4cd798d4
commit 0225bb1e3b
1 file changed
+101
+101
View File
@@ -195,5 +195,106 @@ class TellCommunicationError(Exception):
},
)
def __str__(self) -> str:
return self.message
class JFJochCommunicationError(Exception):
"""
Raised when JFJoch HTTP/API communication fails.
Intended for scan-time fallbacks and GUI-visible alerts.
"""
def __init__(
self,
message: str = "JFJoch communication error",
*,
operation: str | None = None,
endpoint: str | None = None,
base_url: str | None = None,
status_code: int | None = None,
):
super().__init__(message)
self.message = message
self.operation = operation
self.endpoint = endpoint
self.base_url = base_url
self.status_code = status_code
logger.error(
message,
extra={
"device": "jfjjoch",
"operation": operation,
"endpoint": endpoint,
"base_url": base_url,
"status_code": status_code,
},
)
def __str__(self) -> str:
return self.message
class AareDBCommunicationError(Exception):
"""Raised when AareDB HTTPS communication fails."""
def __init__(
self,
message: str = "AareDB communication error",
*,
operation: str | None = None,
endpoint: str | None = None,
base_url: str | None = None,
status_code: int | None = None,
):
super().__init__(message)
self.message = message
self.operation = operation
self.endpoint = endpoint
self.base_url = base_url
self.status_code = status_code
logger.error(
message,
extra={
"device": "aaredb",
"operation": operation,
"endpoint": endpoint,
"base_url": base_url,
"status_code": status_code,
},
)
def __str__(self) -> str:
return self.message
class AerotechCommunicationError(Exception):
"""
Raised when Aerotech HTTP/API communication fails (connection refused, timeout, bad HTTP status, etc).
Keep the original exception in `__cause__` by using `raise ... from e`.
"""
def __init__(
self,
message: str = "Aerotech communication error",
*,
endpoint: str | None = None,
base_url: str | None = None,
operation: str | None = None,
status_code: int | None = None,
):
super().__init__(message)
self.message = message
self.endpoint = endpoint
self.base_url = base_url
self.operation = operation
self.status_code = status_code
logger.error(
message,
extra={
"device": "aerotech",
"operation": operation,
"endpoint": endpoint,
"base_url": base_url,
"status_code": status_code,
},
)
def __str__(self) -> str:
return self.message