0

我的应用程序使用 QT 作为 gui 层,以及我制作的许多其他库。

另一个库中的一个非常复杂(它是一个类型系统)并且充满了断言以使其尽可能可靠。

但是当在这个库中触发断言时,Qt 主循环会继续。我有一个适用于 Qt 部分的 qt_debug()(使用 pyqtRemoveInputHook),但对于其他 python 库则没有。

而且,显然我会避免更改库中的代码,因为它应该可以在没有 Qt 的情况下使用。

最好的解决方案是断言钩子,但尽管谷歌搜索我没有任何明显的方法来做到这一点。任何的想法 ?

4

1 回答 1

4

使用assert是错误的方式。一方面,如果 Python 运行时使用 -O(或 -OO)assert,则关闭;另一方面,错误消息不是很有帮助。该库需要重新设计以正确使用异常。

就目前使用的图书馆而言:你想要发生什么?你的应用应该退出吗?如果是这样,您可以创建自己的 AssertionError 类,将 in 替换为__builtins__您的,然后让它在它的__init__. 请注意,如果您这样做,您将完全靠自己。

于 2012-09-26T15:52:50.357 回答