mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-02-09 06:02:40 +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 isinstance(resp, proto.Failure):
|
||||||
if resp.code == proto.FailureType.ActionCancelled:
|
if resp.code == proto.FailureType.ActionCancelled:
|
||||||
raise exceptions.Cancelled
|
raise exceptions.Cancelled
|
||||||
raise exceptions.TrezorException(resp.code, resp.message)
|
raise exceptions.TrezorFailure(resp)
|
||||||
|
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
|
@ -2,6 +2,26 @@ class TrezorException(Exception):
|
|||||||
pass
|
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):
|
class PinException(TrezorException):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user