From ac9cb04deb51d2ce97b5c02e24ba6b722f7d0933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20ISVELIN?= Date: Wed, 12 Jul 2023 23:07:55 +0300 Subject: [PATCH] Better exception handling: propagate and parse all exceptions --- cq_server/module_manager.py | 12 ++++-------- cq_server/static/viewer.css | 13 ++++++++++--- cq_server/static/viewer.js | 1 - 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/cq_server/module_manager.py b/cq_server/module_manager.py index b125281..1b496d0 100644 --- a/cq_server/module_manager.py +++ b/cq_server/module_manager.py @@ -6,6 +6,7 @@ from typing import List, Dict, Tuple import glob import json +import traceback IGNORE_FILE_NAME = '.cqsignore' @@ -121,7 +122,7 @@ def get_result(self): result = model.build() if not result.success: - raise ModuleManagerError('Error in model', result.exception) + raise ModuleManagerError('Error in model') from result.exception return result @@ -196,7 +197,7 @@ def get_data(self) -> dict: data = { 'error': error.message, - 'stacktrace': error.stacktrace + 'stacktrace': ''.join(traceback.format_exception(type(error), error, error.__traceback__)) } return data @@ -215,12 +216,7 @@ def get_ui_instance(self): class ModuleManagerError(Exception): '''Error class used to define ModuleManager errors.''' - def __init__(self, message: str, stacktrace: str=''): + def __init__(self, message: str): self.message = message - self.stacktrace = stacktrace - print('Module manager error: ' + message, file=sys.stderr) - if stacktrace: - print(stacktrace, file=sys.stderr) - super().__init__(self.message) diff --git a/cq_server/static/viewer.css b/cq_server/static/viewer.css index a64be2f..12ff52a 100644 --- a/cq_server/static/viewer.css +++ b/cq_server/static/viewer.css @@ -15,11 +15,11 @@ body { left: 10%; top: 10%; right: 10%; - bottom: 10%; + max-height: 80%; padding: 1em; font-family: sans-serif; z-index: 1000; - overflow: scroll; + overflow: auto; } .modal.error { @@ -31,7 +31,14 @@ body { } .modal pre { - background-color: grey; + display: inline-block; + padding: 10px; + background-color: #565656; + color: white; + box-sizing: border-box; + overflow: visible; + white-space: pre; + min-width: 100%; } .cqs_module_item { diff --git a/cq_server/static/viewer.js b/cq_server/static/viewer.js index fc502d3..3f9d70e 100644 --- a/cq_server/static/viewer.js +++ b/cq_server/static/viewer.js @@ -60,7 +60,6 @@ function show_error() { document.getElementById('cqs_error_message').innerText = data.error; document.getElementById('cqs_stacktrace').innerText = data.stacktrace; - document.getElementById('cqs_stacktrace').style.display = data.stacktrace ? 'block' : 'none'; document.getElementById('cqs_error').style.display = 'block'; }