如何使用bokeh库(Python&x2B;JavaScript)管理错误并在用户界面上显示它们?
我正在使用Python库“Bokeh”工作,通常会出现两种类型的错误如何使用bokeh库(Python&x2B;JavaScript)管理错误并在用户界面上显示它们?,javascript,python,exception,bokeh,custom-exceptions,Javascript,Python,Exception,Bokeh,Custom Exceptions,我正在使用Python库“Bokeh”工作,通常会出现两种类型的错误 Chromium控制台上的JavaScript错误 Python错误在服务器端,它们出现在Tornado logger中。Bokeh使用Tornado Web服务器 我可以实现的是创建手动异常,继承python中的Exception类。通过这种方式,我可以编写自定义消息,并在此类引发错误时运行一些操作 class手册异常(异常): 定义初始值(自身,值): 自我价值=价值 #一些行动 定义(自我): 返回报告( “手动错误
- Chromium控制台上的JavaScript错误
- Python错误在服务器端,它们出现在Tornado logger中。Bokeh使用Tornado Web服务器
Exception
类。通过这种方式,我可以编写自定义消息,并在此类引发错误时运行一些操作
class手册异常(异常):
定义初始值(自身,值):
自我价值=价值
#一些行动
定义(自我):
返回报告(
“手动错误\n”+self.value
)
但是,如果发生任何其他异常,那么我不知道如何捕获它们以运行一些自定义操作。我试过这个:
试试看:
n=9/0
除例外情况外:
tb=sys.exc_info()[2]
引发手动异常(“零错误”)。带有回溯(tb)
在这里,我必须手动捕获任何错误,并使用手动创建的类引发它们,然后两者都出现在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'
2017-09-04 17:08:58872运行应用程序处理程序时出错:“手动错误\n错误”
文件“main.py”,第11行,在:
n=9/0回溯(最近一次呼叫最后一次):
文件“[…]\main.py”,第11行,在
n=9/0
ZeroDivision错误:被零除
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“[…]\lib\site packages\bokeh\application\handlers\code\u runner.py”,第125行,正在运行
exec(自我代码、模块指令)
文件“[…]\main.py”,第14行,在
引发手动异常(“零错误”)。带有回溯(tb)
文件“[…]\main.py”,第11行,在
n=9/0
exceptions.ManualException:“手动错误\n'ZERO ERROR”
无论如何,我希望避免这种情况,因为我希望向用户显示所有类型的错误,即使我没有使用try except
捕获异常
另一方面,如果发生python错误,将显示JavaScript消息。所以我认为最好的选择是重写一些JavaScript方法来运行一些自定义js代码。我怎样才能做到这一点?这是可以实现的吗
我明白了。可以将一些侦听器添加到窗口中以获取JavaScript错误消息
您可以将其作为窗口对象上的事件侦听器来处理
window.onunhandledrejection = function(event) {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};
window.onerror = function(event) {
console.warn(`UNHANDLED ERROR: ${event.message}`);
};
或者也像这样:
window.addEventListener('error', function(event) { ... })
您可以阅读上的unhandledrejection
事件和上的onerror
事件的更多信息