tkivy: attempt at handling (some) exceptions on startup - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit c531c729404805eade8da509d5be4823c3c34413 DIR parent a05dab2c4dcf0ce2f69e9a4258bd3c88c818a91d HTML Author: SomberNight <somber.night@protonmail.com> Date: Tue, 10 Sep 2019 21:29:13 +0200 kivy: attempt at handling (some) exceptions on startup Diffstat: M electrum/gui/kivy/main_window.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) --- DIR diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py t@@ -512,6 +512,19 @@ class ElectrumWindow(App): mActivity = python_act.mActivity mActivity.moveTaskToBack(True) + def handle_crash_on_startup(func): + def wrapper(self, *args, **kwargs): + try: + return func(self, *args, **kwargs) + except Exception as e: + from .uix.dialogs.crash_reporter import CrashReporter + # show the crash reporter, and when it's closed, shutdown the app + cr = CrashReporter(self, exctype=type(e), value=e, tb=e.__traceback__) + cr.on_dismiss = lambda: self.stop() + Clock.schedule_once(lambda _, cr=cr: cr.open(), 0) + return wrapper + + @handle_crash_on_startup def on_start(self): ''' This is the start point of the kivy ui ''' t@@ -551,7 +564,6 @@ class ElectrumWindow(App): self.network.register_callback(self.on_channel, ['channel']) self.network.register_callback(self.on_payment_status, ['payment_status']) # load wallet - # FIXME if this raises, the whole app quits, without any user feedback or exc reporting self.load_wallet_by_name(self.electrum_config.get_wallet_path(use_gui_last_wallet=True)) # URI passed in config uri = self.electrum_config.get('url')