python - 如何在运行 PyQt 应用程序时捕获 main 中引发的异常?
问题描述
假设我们有这个简单的主程序:
from matplotlib.backends.qt_compat import QtWidgets
from initial import InitialWindow
if __name__ == '__main__':
try:
app = QtWidgets.QApplication([])
ex = InitialWindow()
ex.show()
app.exec_()
except:
# Do something
print('Hello')
正在运行的应用程序非常复杂,并且正在创建多个窗口。为每个在内部工作的类做一个异常处理程序是相当乏味的,所以我在想是否有办法捕获在 main执行期间引发的任何app
异常,并在终止程序之前做一些事情。
有没有办法做到这一点?
解决方案
您可以创建自己的错误处理程序来捕获标准错误。例如像这样;
import sys
import traceback
from matplotlib.backends.qt_compat import QtWidgets
from initial import InitialWindow
def error_handler(etype, value, tb):
error_msg = ''.join(traceback.format_exception(etype, value, tb))
# do something with the error message, for example print it
if __name__ == '__main__':
sys.excepthook = error_handler # redirect std error
app = QtWidgets.QApplication([])
ex = InitialWindow()
ex.show()
app.exec_()
推荐阅读
- c# - LINQ to Entities 解决方法中不支持指定的类型成员“日期”
- android - How to get date from 2020-02-27T15:00:43+0000 format
- python - Blob 存储:连接到模拟器,本地开发失败
- javascript - 尝试使用 CustomJS 加载新图像时查看临时文件的散景
- python - 将大量数据从一个表插入另一个 MySQL Python
- validation - 为什么 Rails 显示验证错误?
- python - 覆盖在使用 python 3.8 但不是 3.7 的 Windows 上运行非常缓慢
- java - 如何在面向对象设计中管理交叉引用?(国际象棋示例)
- python - 向 tf.estimator 提供时间数据:`input_fn` 必须是可调用的
- javascript - React - 如何将包含在变量中的 HTML 呈现出来?