|
@@ -36,18 +36,14 @@ else:
|
|
|
except ImportError:
|
|
|
CuraDebugMode = False # [CodeStyle: Reflecting imported value]
|
|
|
|
|
|
-# List of exceptions that should be considered "fatal" and abort the program.
|
|
|
-# These are primarily some exception types that we simply cannot really recover from
|
|
|
-# (MemoryError and SystemError) and exceptions that indicate grave errors in the
|
|
|
-# code that cause the Python interpreter to fail (SyntaxError, ImportError).
|
|
|
-fatal_exception_types = [
|
|
|
- MemoryError,
|
|
|
- SyntaxError,
|
|
|
- ImportError,
|
|
|
- SystemError,
|
|
|
+# List of exceptions that should not be considered "fatal" and abort the program.
|
|
|
+# These are primarily some exception types that we simply skip
|
|
|
+skip_exception_types = [
|
|
|
+ SystemExit,
|
|
|
+ KeyboardInterrupt,
|
|
|
+ GeneratorExit
|
|
|
]
|
|
|
|
|
|
-
|
|
|
class CrashHandler:
|
|
|
crash_url = "https://stats.ultimaker.com/api/cura"
|
|
|
|
|
@@ -70,7 +66,7 @@ class CrashHandler:
|
|
|
# If Cura has fully started, we only show fatal errors.
|
|
|
# If Cura has not fully started yet, we always show the early crash dialog. Otherwise, Cura will just crash
|
|
|
# without any information.
|
|
|
- if has_started and exception_type not in fatal_exception_types:
|
|
|
+ if has_started and exception_type in skip_exception_types:
|
|
|
return
|
|
|
|
|
|
if not has_started:
|
|
@@ -387,7 +383,7 @@ class CrashHandler:
|
|
|
Application.getInstance().callLater(self._show)
|
|
|
|
|
|
def _show(self):
|
|
|
- # When the exception is not in the fatal_exception_types list, the dialog is not created, so we don't need to show it
|
|
|
+ # When the exception is in the skip_exception_types list, the dialog is not created, so we don't need to show it
|
|
|
if self.dialog:
|
|
|
self.dialog.exec_()
|
|
|
os._exit(1)
|