Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用bokeh库(Python&x2B;JavaScript)管理错误并在用户界面上显示它们?_Javascript_Python_Exception_Bokeh_Custom Exceptions - Fatal编程技术网

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

如何使用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手册异常(异常): 定义初始值(自身,值): 自我价值=价值 #一些行动 定义(自我): 返回报告( “手动错误

我正在使用Python库“Bokeh”工作,通常会出现两种类型的错误

  • Chromium控制台上的JavaScript错误
  • Python错误在服务器端,它们出现在Tornado logger中。Bokeh使用Tornado Web服务器
我可以实现的是创建手动异常,继承python中的
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
事件的更多信息