mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-02-02 19:01:04 +00:00
exceptions: smarter, nicer exceptions from Failures
This commit is contained in:
parent
eb2b58e1f4
commit
3e7b26b454
@ -152,7 +152,7 @@ class BaseClient(object):
|
||||
if isinstance(resp, proto.Failure):
|
||||
if resp.code == proto.FailureType.ActionCancelled:
|
||||
raise exceptions.Cancelled
|
||||
raise exceptions.TrezorException(resp.code, resp.message)
|
||||
raise exceptions.TrezorFailure(resp)
|
||||
|
||||
return resp
|
||||
|
||||
|
@ -2,6 +2,26 @@ class TrezorException(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class TrezorFailure(TrezorException):
|
||||
def __init__(self, failure):
|
||||
self.failure = failure
|
||||
# TODO: this is backwards compatibility with tests. it should be changed
|
||||
super().__init__(self.failure.code, self.failure.message)
|
||||
|
||||
def __str__(self):
|
||||
from .messages import FailureType
|
||||
|
||||
types = {
|
||||
getattr(FailureType, name): name
|
||||
for name in dir(FailureType)
|
||||
if not name.startswith("_")
|
||||
}
|
||||
if self.failure.message is not None:
|
||||
return "{}: {}".format(types[self.failure.code], self.failure.message)
|
||||
else:
|
||||
return types[self.failure.code]
|
||||
|
||||
|
||||
class PinException(TrezorException):
|
||||
pass
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user