diff --git a/aiopulse/errors.py b/aiopulse/errors.py
index 8ddaaeb..90b6d4d 100644
--- a/aiopulse/errors.py
+++ b/aiopulse/errors.py
@@ -1,10 +1,16 @@
 """Error classes of aiopulse module."""
+from __future__ import annotations
 
 
 class HubBaseException(Exception):
     """Base Exception for protocol."""
 
-    pass
+    def __init__(
+        self, message: str = "", response: bytes | None = None
+    ) -> None:
+        """Initialize exception with optional response context."""
+        super().__init__(message)
+        self.response = response
 
 
 class NotConnectedException(HubBaseException):
diff --git a/tests/test_errors.py b/tests/test_errors.py
index 439e277..148fce7 100644
--- a/tests/test_errors.py
+++ b/tests/test_errors.py
@@ -41,3 +41,45 @@ class TestErrors:
         assert issubclass(CannotConnectException, HubBaseException)
         assert issubclass(InvalidResponseException, HubBaseException)
         assert issubclass(HubBaseException, Exception)
+
+
+class TestHubBaseException:
+    def test_basic_creation(self):
+        exc = HubBaseException("test message")
+        assert str(exc) == "test message"
+
+    def test_with_response_context(self):
+        response = b"\x00\x01\x02\x03"
+        exc = HubBaseException("test message", response=response)
+        assert exc.response == response
+
+
+class TestInvalidResponseException:
+    def test_basic_creation(self):
+        exc = InvalidResponseException("invalid response")
+        assert str(exc) == "invalid response"
+        assert exc.response is None
+
+    def test_with_response(self):
+        response = b"\xff\xff\xff\xff"
+        exc = InvalidResponseException("invalid header", response=response)
+        assert exc.response == response
+        assert b"\xff\xff" in exc.response
+
+
+class TestNotConnectedException:
+    def test_basic_creation(self):
+        exc = NotConnectedException("not connected")
+        assert str(exc) == "not connected"
+
+
+class TestCannotConnectException:
+    def test_basic_creation(self):
+        exc = CannotConnectException("connection refused")
+        assert str(exc) == "connection refused"
+
+
+class TestNotRunningException:
+    def test_basic_creation(self):
+        exc = NotRunningException("not running")
+        assert str(exc) == "not running"
