exception.py 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/usr/bin/env python3
  2. #
  3. # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
  4. # Copyright (C)2013-2022 The MMGen Project <mmgen@tuta.io>
  5. #
  6. # This program is free software: you can redistribute it and/or modify
  7. # it under the terms of the GNU General Public License as published by
  8. # the Free Software Foundation, either version 3 of the License, or
  9. # (at your option) any later version.
  10. #
  11. # This program is distributed in the hope that it will be useful,
  12. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. # GNU General Public License for more details.
  15. #
  16. # You should have received a copy of the GNU General Public License
  17. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. """
  19. mmgen.exception: Exception classes for the MMGen suite
  20. """
  21. class MMGenError(Exception):
  22. def __init__(self,errno,strerror,stdout):
  23. self.mmcode = errno
  24. self.stdout = stdout
  25. super().__init__(strerror)
  26. def __repr__(self):
  27. return f'{type(self).__name__}({self.mmcode}): {self}'
  28. class MMGenSystemExit(MMGenError):
  29. pass
  30. # 1: no hl, message only
  31. class UserNonConfirmation(Exception): mmcode = 1
  32. class BadAgeFormat(Exception): mmcode = 1
  33. class BadFilename(Exception): mmcode = 1
  34. class BadFileExtension(Exception): mmcode = 1
  35. class SocketError(Exception): mmcode = 1
  36. class UserAddressNotInWallet(Exception): mmcode = 1
  37. class MnemonicError(Exception): mmcode = 1
  38. class RangeError(Exception): mmcode = 1
  39. class FileNotFound(Exception): mmcode = 1
  40. class InvalidPasswdFormat(Exception): mmcode = 1
  41. class CfgFileParseError(Exception): mmcode = 1
  42. class UserOptError(Exception): mmcode = 1
  43. class NoLEDSupport(Exception): mmcode = 1
  44. # 2: yellow hl, message only
  45. class InvalidTokenAddress(Exception): mmcode = 2
  46. class UnrecognizedTokenSymbol(Exception): mmcode = 2
  47. class TokenNotInBlockchain(Exception): mmcode = 2
  48. class TokenNotInWallet(Exception): mmcode = 2
  49. class BadTwComment(Exception): mmcode = 2
  50. class BadTwLabel(Exception): mmcode = 2
  51. class BaseConversionError(Exception): mmcode = 2
  52. class BaseConversionPadError(Exception): mmcode = 2
  53. class TransactionChainMismatch(Exception):mmcode = 2
  54. class ObjectInitError(Exception): mmcode = 2
  55. class ClassFlagsError(Exception): mmcode = 2
  56. class ExtensionModuleError(Exception): mmcode = 2
  57. # 3: yellow hl, 'MMGen Error' + exception + message
  58. class RPCFailure(Exception): mmcode = 3
  59. class RPCChainMismatch(Exception): mmcode = 3
  60. class BadTxSizeEstimate(Exception): mmcode = 3
  61. class MaxInputSizeExceeded(Exception): mmcode = 3
  62. class MaxFileSizeExceeded(Exception): mmcode = 3
  63. class MaxFeeExceeded(Exception): mmcode = 3
  64. class WalletFileError(Exception): mmcode = 3
  65. class HexadecimalStringError(Exception): mmcode = 3
  66. class SeedLengthError(Exception): mmcode = 3
  67. class PrivateKeyError(Exception): mmcode = 3
  68. class MMGenCalledProcessError(Exception): mmcode = 3
  69. # 4: red hl, 'MMGen Fatal Error' + exception + message
  70. class BadMMGenTxID(Exception): mmcode = 4
  71. class IllegalWitnessFlagValue(Exception): mmcode = 4
  72. class TxHexParseError(Exception): mmcode = 4
  73. class TxHexMismatch(Exception): mmcode = 4
  74. class SubSeedNonceRangeExceeded(Exception): mmcode = 4