Python 检查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

如何使用NVDA错误日志检查代码中的错误?我创建了一个插件,由于一些错误,它似乎无法工作。如何使用错误日志或任何其他可能的方法调试代码

我面临的错误在以下代码中:

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