URI: 
       tRBF: better exception handling - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 9365b0f924a41284b471ba6a0521003dd76151ac
   DIR parent 1b834a7a7887af7f67952b7152928b62484a806b
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Thu, 14 Jun 2018 22:36:54 +0200
       
       RBF: better exception handling
       
       Diffstat:
         M gui/qt/main_window.py               |       7 +++----
         M lib/wallet.py                       |       7 +++++--
       
       2 files changed, 8 insertions(+), 6 deletions(-)
       ---
   DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -53,7 +53,7 @@ from electrum.util import (format_time, format_satoshis, format_fee_satoshis,
        from electrum import Transaction
        from electrum import util, bitcoin, commands, coinchooser
        from electrum import paymentrequest
       -from electrum.wallet import Multisig_Wallet, AddTransactionException
       +from electrum.wallet import Multisig_Wallet, AddTransactionException, CannotBumpFee
        
        from .amountedit import AmountEdit, BTCAmountEdit, MyLineEdit, FeerateEdit
        from .qrcodewidget import QRCodeWidget, QRDialog
       t@@ -3165,9 +3165,8 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
                    return
                try:
                    new_tx = self.wallet.bump_fee(tx, delta)
       -        except BaseException as e:
       -            traceback.print_exc(file=sys.stderr)
       -            self.show_error(_('Error bumping fee') + ':\n' + str(e))
       +        except CannotBumpFee as e:
       +            self.show_error(str(e))
                    return
                if is_final:
                    new_tx.set_rbf(False)
   DIR diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -170,6 +170,9 @@ class UnrelatedTransactionException(AddTransactionException):
                return _("Transaction is unrelated to this wallet.")
        
        
       +class CannotBumpFee(Exception): pass
       +
       +
        class Abstract_Wallet(PrintError):
            """
            Wallet classes are created to handle various address generation methods.
       t@@ -1377,7 +1380,7 @@ class Abstract_Wallet(PrintError):
        
            def bump_fee(self, tx, delta):
                if tx.is_final():
       -            raise Exception(_('Cannot bump fee') + ': ' + _('transaction is final'))
       +            raise CannotBumpFee(_('Cannot bump fee') + ': ' + _('transaction is final'))
                tx = Transaction(tx.serialize())
                tx.deserialize(force_full_parse=True)  # need to parse inputs
                inputs = copy.deepcopy(tx.inputs())
       t@@ -1410,7 +1413,7 @@ class Abstract_Wallet(PrintError):
                        if delta > 0:
                            continue
                if delta > 0:
       -            raise Exception(_('Cannot bump fee') + ': ' + _('could not find suitable outputs'))
       +            raise CannotBumpFee(_('Cannot bump fee') + ': ' + _('could not find suitable outputs'))
                locktime = self.get_local_height()
                tx_new = Transaction.from_io(inputs, outputs, locktime=locktime)
                tx_new.BIP_LI01_sort()