捕获所有异常,以便在部署应用程序后更容易地进行调试



这里是新手程序员。我是用Python来表达这个问题的,但我认为这对任何有异常处理概念的编程语言来说都是有意义的。

它是:我正在为一个商业客户编写一个软件,该客户将通过使用GUI与该软件进行交互。

我正在考虑将所有核心业务逻辑放在try/except块中,以便捕获所有我没有计划的异常(并且在它们出现之前捕获并解决(。这些可能是我正在使用的其他库中的错误,我自己的错误,或者其他不可预见的事件。然后,我希望在GUI错误消息中显示这些异常的输出。

这背后的原因是,如果在我的软件部署后发生了这样的错误,客户端会打电话给我,告诉我"嘿,我收到了一条写着X的错误消息",那么我至少会从X那里得到一些关于出了什么问题的提示,并可以立即开始调试,而不是GUI只是无声地退出,客户端会给我打电话,说"你的应用程序刚刚死了"。

1( 这是个好主意吗?由于该软件将在"安全设置"中使用,因此不会出现敏感信息泄漏到错误消息中的问题,然后会显示错误消息。但我仍然不确定,用这种方法我可能不会遇到任何其他问题。

2( 如果我要走这条路,我应该使用except BaseException还是except Exception
即使在查阅了Python的异常层次结构后,我也不知道如果我使用第一个选项,我会得到的三个额外异常是什么时候抛出的。我的应用程序不会使用键盘,所以我认为我对KeyboardInterrupt是安全的,但我不确定其他两个,SystemExitGeneratorExit

  1. 只有当用户需要知道时,才在gui中显示错误消息,例如程序无法从错误中恢复时。

  2. 使用except BaseException可以避免捕获需要以不同方式处理的异常。如果您需要捕获每一种类型的异常,请尝试制作尽可能多的except块,以便从尽可能多地错误中恢复。

最新更新