Python:看不到抛出的异常

2024-01-23

我正在运行单元测试,我意识到抛出了异常。然而,我只是不确定到底抛出了什么。

from pt_hil.utilities.PT_HIL_Interface_Utils.widgets import PathPicker
import unittest
import wx

class TestUM(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        print 'setUpClass called'
        cls.path_picker = PathPicker()
        print 'path_picker has been declared'

    def test_PathPicker(self):
        self.assertRaises(NotImplementedError, wx.UIActionSimulator.MouseClick(self.path_picker.browse))

if __name__ == '__main__':
    unittest.main()

路径选择器类:

class PathPicker(Widget):

    def __init__(self, parent=None, name="PathPicker"):
        print 'hi1'
        try:
            Widget.__init__(self, name, parent)
        except Exception as e:
            print 'hello'
            return logging.error(traceback.format_exc())
        print 'hi2'

运行单元测试时得到的输出是:

setUpClass called
hi1

Process finished with exit code 1

很明显,出现问题的地方是:Widget.__init__(self, name, parent)但我看不出它是什么。有什么方法可以让我打印出抛出的异常或错误吗?

编辑:这是与之配套的 Widget 类:

class Widget(QWidget):
    def __init__(self, name, parent=None):
        print 'hey2'
        try:
            super(Widget, self).__init__()
        except BaseException as e:
            print 'hello'
            return logging.error(traceback.format_exc())
        print 'hey3'

现在它给了我:

setUpClass called
hi1
hey2

Process finished with exit code 1

如你看到的here https://docs.python.org/2/library/exceptions.html#exception-hierarchy,python (2.x) 中最常见的例外是:

BaseException
 +-- SystemExit
 +-- KeyboardInterrupt
 +-- GeneratorExit
 +-- Exception
      +-- StopIteration
      +-- StandardError
      ....

因此,在您的情况下,通过捕获 Exception 您会丢失一些其他异常(罕见的异常,但可能发生在您的情况下):SystemExit、KeyboardInterrupt 和 GeneratorExit。 尝试将 except 子句更改为:

except BaseException as e:

这样,您一定会捕获所有异常并检测您的问题。

EDIT:

但是,PyQT 内部也很有趣。如前所述here http://pyqt.sourceforge.net/Docs/PyQt5/incompatibilities.html#unhandled-python-exceptions :

在 PyQt v5.5 中,未处理的 Python 异常将导致调用 Qt 的 qFatal() 函数。默认情况下,这将调用 abort() 并且 应用程序将终止。请注意,已安装应用程序 异常钩子仍然优先。

因此,一个无异常的异常(在 C++ 代码中可能由于多种原因而发生,错误的参数......)可以默默地停止您的应用程序。 然而,最后一部分听起来很有用,如果您安装了异常钩子,它将在静默中止之前被调用。让我们尝试添加一个异常钩子:

sys._excepthook = sys.excepthook # always save before overriding

def application_exception_hook(exctype, value, traceback):
    # Let's try to write the problem
    print "Exctype : %s, value : %s traceback : %s"%(exctype, value, traceback)
    # Call the normal Exception hook after (this will probably abort application)
    sys._excepthook(exctype, value, traceback)
    sys.exit(1)

# Do not forget to our exception hook
sys.excepthook = application_exception_hook
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:看不到抛出的异常 的相关文章

  • 第一次机会异常 - 在内存位置长?

    这是什么 我该如何处理 修复它 First chance exception at 0x756fb727 in Program exe Microsoft C exception long at memory location 0x0018
  • 使用 pythonbrew 编译 Python 3.2 和 2.7 时出现问题

    我正在尝试使用构建多个版本的 python蟒蛇酿造 http pypi python org pypi pythonbrew 0 7 3 但我遇到了一些测试失败 这是在运行的虚拟机上 Ubuntu 8 04 32 位 当我使用时会发生这种情
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2

随机推荐

  • bash - Shell 脚本打开多个终端并执行不同的命令[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我尝试编写自己的 shell 脚本 到目前为止 我已经成功打开了 4 个 xterminal 由于 hold 选项 它们只能执行一个命令 如
  • .NET Core 中的一对多关系数据播种

    我在将数据播种到我的数据库时遇到问题OnModelCreating method 我想为我的数据库添加种子国家 States and Cities但我不知道当他们有的时候该怎么做一对多关系 Models public class City
  • rsync 排除目录但包含子目录

    我正在尝试使用 rsync 将项目复制到我的服务器 我的子目录中有项目特定的安装脚本 项目 规格 安装 project1 我想做的就是排除其中的所有内容项目 规格目录 但项目特定的安装目录 项目 规格 安装 project1 rsync a
  • 我需要在 javafx 中创建后退按钮功能?

    我目前正在使用类似的东西将此代码绑定到 fxml javafx 按钮 Parent parent FXMLLoader load getClass getResource AolRun fxml Stage stage new Stage
  • ALV 报告填补了文档之间的空白

    我试图挑战自己制作一份按公司代码显示所有数据的 ALV 报告 但有些文件编号有差距 我想填补缺失号码之间的空白 例如 最后索引值 20012 那么下一个值是 20014 如果报表使用内表中存在的所有数据 如何在网格中插入 20013 Tha
  • 选择并 ForEach 列表 <> [重复]

    这个问题在这里已经有答案了 我对 C 很陌生 并尝试使用 lambda 表达式 我有一个对象列表 我想从列表中选择项目并对所选项目执行 foreach 操作 我知道我可以在不使用 lambda 表达式的情况下做到这一点 但想知道是否可以使用
  • 将无序列表的元组转换为 pandas DataFrame

    我正在使用图书馆usaddress从我拥有的一组文件中解析地址 我希望我的最终输出是一个数据框 其中列名称代表地址的一部分 例如街道 城市 州 行代表我提取的每个单独地址 例如 假设我有一个地址列表 addr 123 Pennsylvani
  • 如何修剪字符之间的空白

    如何删除C 中字符之间的空格 Trim 可用于删除字符串开头和结尾的空格 例如 C Sharp Trim 结果 C Sharp 但如何将字符串变成CSharp 我们可以使用删除空格for or a for each与临时变量一起循环 但是有
  • 页面加载后 Javascript 运行函数

    我正在尝试用 Javascript 创建一个小型自动化脚本 我想使用 Opera 的用户脚本功能来定义要运行的外部脚本 并在网站上运行该脚本 我之前曾使用此功能来运行我用外部站点编写的脚本 效果很好 我需要等到页面加载才能运行脚本 但我似乎
  • python csv问题[重复]

    这个问题在这里已经有答案了 我只是在 python 中测试 csv 组件 但遇到了一些问题 我有一个相当标准的 csv 字符串 默认选项似乎都适合我的测试 但结果不应该将 1 2 3 4 连续分组 将 5 6 7 8 连续分组 非常感谢您提
  • Snowflake Python Pandas 连接器 - 使用 fetch_pandas_all 时出现未知错误

    我正在尝试使用 python pandas 连接器连接到雪花 我在 Windows 上使用 anaconda 发行版 但卸载了现有的连接器和 pyarrow 并使用此页面上的说明重新安装 https docs snowflake com e
  • Netbeans 热键关闭突出显示的搜索文本?

    我用谷歌搜索过这个问题 但没有找到 如果您知道如何操作 请分享 对于 7 0 工具 gt 选项 gt 键盘映射 gt 切换突出显示搜索 我的是 Alt Shift H
  • 如何在WCF中设置cookie并在调用Ajax的成功函数(或其他地方)中读取它

    我有一些 jQuery JavaScript 调用一个简单的 WCF Web 服务 对我来说 在 JavaScript 中设置 cookie 并在服务器端读取它相当容易 这是该代码 客户端 JavaScript document cooki
  • 如何在 TypeScript 中从界面中排除某个键

    在 TypeScript 中 您可以像这样组合两种接口类型 interface Foo var1 string interface Bar var2 string type Combined Foo Bar 我不想组合键 而是想将键从一个接
  • Mercurial qfold 所有补丁?

    结果发现没有hg qfold a I tried hg qfold hg qunapp and hg qunapp xargs hg qfold但无法让它发挥作用 有任何想法吗 通过您的 xargs 方法 您是否还记得 qfold 只能折叠
  • 计算多维数组中的重复值

    我需要计算多维数组中的相同值并删除重复项 我的阵列 r a b a b c d c d c d e f 需要输出 0 gt Array 0 gt a 1 gt b 1 gt 2 Result 1 gt Array 0 gt c 1 gt d
  • 为什么允许访问另一个对象的私有字段?

    最近 我观察到在 Java 中访问 priavte 字段的意外行为 考虑以下示例 该示例说明了该行为 public class A private int i lt private field public A int i this i i
  • 如何创建指向同一文件的 Doxygen 链接

    我想编写一条 Doxygen 注释来命名出现注释的文件 我希望 Doxygen 为我提供文件名 而不是显式地编写文件名 因此 如果我更改文件的名称 或将某些内容移动到不同的文件中 我不需要更改名称的硬编码实例 举一个具体的例子 假设我要向
  • 网页模板,其中内容占据视口的整个高度(如果有 1 行减去页脚)

    我正在寻找一个基于 CSS 的网页模板 其中主要内容div当其内容只有几行时 占据视口的整个高度 减去页眉和页脚高度 页脚应该位于视口的底部 而不是内容的正下方 它更多地位于视口的中间 内容区域需要垂直扩展才能与页脚顶部连接 如果内容需要比
  • Python:看不到抛出的异常

    我正在运行单元测试 我意识到抛出了异常 然而 我只是不确定到底抛出了什么 from pt hil utilities PT HIL Interface Utils widgets import PathPicker import unitt