classifyUDXException static method
Classifies UDX exceptions into appropriate exception types
Implementation
static UDXTransportException classifyUDXException(
dynamic error,
String context,
StackTrace stackTrace,
) {
if (error is UDXTransportException) {
return error; // Already classified
}
if (error is StateError) {
final message = error.message;
if (message.contains('permanently lost') || message.contains('packet.*lost')) {
return UDXPacketLossException(context, error);
}
return UDXConnectionException(
'UDX state error: $message',
context,
error,
isTransient: false,
);
}
if (error is SocketException) {
return UDXConnectionException(
'UDX socket error: ${error.message}',
context,
error,
isTransient: _isTransientSocketError(error),
);
}
if (error is TimeoutException) {
return UDXTimeoutException(
context,
error.duration ?? const Duration(seconds: 30),
error,
);
}
if (error is OSError) {
return UDXConnectionException(
'UDX OS error: ${error.message}',
context,
error,
isTransient: _isTransientOSError(error),
);
}
// Generic UDX error
return UDXTransportException(
'UDX operation failed: $error',
context,
error,
isTransient: false,
);
}