Python 检查NVDA中的错误日志
如何使用NVDA错误日志检查代码中的错误?我创建了一个插件,由于一些错误,它似乎无法工作。如何使用错误日志或任何其他可能的方法调试代码 我面临的错误在以下代码中:Python 检查NVDA中的错误日志,python,screen-readers,error-log,nvda,Python,Screen Readers,Error Log,Nvda,如何使用NVDA错误日志检查代码中的错误?我创建了一个插件,由于一些错误,它似乎无法工作。如何使用错误日志或任何其他可能的方法调试代码 我面临的错误在以下代码中: import globalPluginHandler import ui import versionInfo from NVDAObjects.window.scintilla import Scintilla class GlobalPlugin(globalPluginHandler.GlobalPlugin): def
import globalPluginHandler
import ui
import versionInfo
from NVDAObjects.window.scintilla import Scintilla
class GlobalPlugin(globalPluginHandler.GlobalPlugin):
def _messag(self, gesture):
ui.message("notepad++ opened") # speak hello when notepad++ is the current screen
def chooseNVDAObjectOverlayClasses(self, obj, clsList):
if obj.windowClassName == u'Scintilla' and obj.windowControlID == 0:
clsList.insert(0, self._messag)
我对NVDA一无所知,但当python程序失败时,它们会引发一个异常。您也许可以包括一种机制来捕获这些异常并将其发送到一个文件。例如,让我们从中获取一个插件 我在代码中添加了一个decorator,它捕获可能发生的异常,并将它们显示在html文件中,例如,可以在浏览器中显示
import functools
import cgitb
import sys
def MY_EXCEPTION_CATCHER(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except Exception:
with open('exception.html', 'w') as outfile:
outfile.write(cgitb.html(sys.exc_info())
raise
return wrapper
我希望它能有所帮助。为什么不像开发人员指南示例中那样有一个
\uuuu signals={…}
语句?只有当我通过键盘输入一些信息时,手势才会出现。然而,这里我要说的是,当Notepad++成为开发者指南中的活动窗口时,他们在clsList
中插入一个类,而不是一个绑定方法。你不能试着做同样的事吗?另外,如果什么也没有发生,可能是因为回调没有绑定到事件。非常感谢。现在工作:)什么不工作?您可能需要调整exception.html文件的路径,或者将decorator应用于插件类中的其他函数。请尝试。但是raise和return关键字在编辑器中异常突出显示。同样在运行代码之后,我看不到任何区别。唯一的区别是,如果在修饰的回调期间出现异常,那么您在某处有一个文件exception.html
(您可以给出此文件的完整路径)。另外,如果要检查回调是否实际执行,可以尝试在回调本身中引发异常,例如raiseruntimeerror('Hello here')
import functools
import cgitb
import sys
def MY_EXCEPTION_CATCHER(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except Exception:
with open('exception.html', 'w') as outfile:
outfile.write(cgitb.html(sys.exc_info())
raise
return wrapper