Skip to content

Commit 01357d4

Browse files
committed
Use custom exception types for bus errors
These can be caught the same way, but can also be caught more specifically, and can carry more useful detail.
1 parent 0b545c1 commit 01357d4

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

src/main/scripts/lib/micropython/devices.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,17 @@
44
import json
55

66

7+
class RPCBusError(Exception):
8+
def __init__(self, data):
9+
super().__init__(f"error on RPC bus: {data}")
10+
self.data = data
11+
12+
class MessageTypeError(Exception):
13+
def __init__(self, message):
14+
super().__init__(f"unexpected message type: {message['type']}")
15+
self.type = message['type']
16+
self.message = message
17+
718
class Device:
819
def __init__(self, device_bus, device_id):
920
self.bus = device_bus
@@ -151,9 +162,10 @@ def _read_message(self, expected_type):
151162
else:
152163
return
153164
elif data["type"] == "error":
154-
raise Exception(data["data"])
165+
raise RPCBusError(data["data"])
155166
else:
156-
raise Exception("unexpected message type: %s" % data["type"])
167+
raise MessageTypeError(data)
168+
157169

158170
def _buffer_remaining(self):
159171
return len(self._buffer) - self._buffer_pos

0 commit comments

Comments
 (0)