如何使用bokeh库(Python+JavaScript)管理错误并在用户界面上显示它们?

2024-05-19 11:04:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python库“Bokeh”Bokeh Server Application中工作,通常会遇到两种类型的错误。在

  • Chromium控制台上的JavaScript错误
  • Python错误在服务器端,它们会出现在Tornado logger中。Bokeh与Tornado Web服务器一起工作

我可以实现的是创建继承python中的Exception类的手动异常。通过这种方式,我可以编写自定义消息,并在该类引发错误时运行一些操作。在

class ManualException(Exception):
    def __init__(self, value):
        self.value = value

        # some actions

    def __str__(self):
        return repr(
            'MANUAL ERROR\n' + self.value
        )

但是如果发生任何其他异常,那么我不知道如何捕捉它们来运行一些自定义操作。我试过了:

^{pr2}$

在这里,我必须手动捕捉任何错误,并用我手动创建的类来引发它们,然后两者都会出现在python记录器中。这样做对吗?在

2017-09-04 17:08:58,872 Error running application handler <bokeh.application.handlers.directory.DirectoryHandler object at 0x0000023E2435C208>: 'MANUAL ERROR\nZERO ERROR'
File "main.py", line 11, in <module>:
n = 9 / 0 Traceback (most recent call last):
File "[...]\main.py", line 11, in <module>
    n = 9 / 0
ZeroDivisionError: division by zero

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "[...]\lib\site-packages\bokeh\application\handlers\code_runner.py", line 125, in run
    exec(self._code, module.__dict__)
File "[...]\main.py", line 14, in <module>
    raise ManualException('ZERO ERROR').with_traceback(tb)
File "[...]\main.py", line 11, in <module>
    n = 9 / 0
exceptions.ManualException: 'MANUAL ERROR\n'ZERO ERROR'

无论如何,我想避免这种情况,因为我想向用户显示所有类型的错误,即使我不使用try-except来捕获异常。在

另一方面,如果发生python错误,则显示JavaScript消息。所以我认为最好的选择是重写一些JavaScript方法来运行一些定制的js代码。我怎么能做到这一点?这能实现吗?在

enter image description here


Tags: inpyselfvaluemain错误linebokeh

热门问题