python - 如何将每个引发的错误重定向到弹出窗口?
问题描述
目标:将错误重定向到一个独特的弹出窗口,该弹出窗口将在 kivy 应用程序而不是终端上显示错误。它可以防止应用程序崩溃并向用户显示他可以给我调试应用程序的错误消息。
GUESS:这是一个关于如何做到这一点的 mvp,但如果不每次都对其进行编码,我不知道如何解决大部分错误。
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.popup import Popup
KV = '''
BoxLayout:
Label:
text: "name"
'''
class MyApp(App):
def build(self):
box = Builder.load_string(KV)
try:
int("za")
except Exception as e:
MyPopup(title=str(e), size_hint=(0.5, 0.5))
return box
class MyPopup(Popup):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.open()
if __name__ == "__main__":
MyApp().run()
解决方案
你真的不能。捕获所有异常的唯一方法是“try-except” MyApp.run() 方法。由于多种原因,这不起作用。
在开发我的应用程序时,我实际上遇到了同样的问题。我只是通过将几乎所有代码分成函数并“尝试排除”我知道可能失败的代码来解决它,比如用户输入、计算机视觉的东西等。(基本上任何需要输入的东西,那不是硬编码。)
推荐阅读
- visual-studio-code - 在编辑器/标题菜单中使用内置的 Octicons 用于 vscode 扩展命令贡献点
- docker - docker login error 登录:帐户未激活。关系存储库
- delphi - 像任务管理器一样始终处于领先地位
- http - 需要拦截和重定向 http 请求,因为站点的 IP 在测试机器上是不可见的,但网络服务器可以从内部地址访问
- python - 用python请求替换curl相当于将文件POST到服务器
- azure - Microsoft Azure IOT Hub 和自定义路由
- flutter - 如何在 Flutter 中排列盒子?
- google-colaboratory - 多个 Colab 笔记本可以共享同一个运行时吗?
- php - 使用未定义的常量 S - 假定为“S”
- javascript - 如何为 jQuery 动态文本框的项目编号