首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在全局异常处理程序/崩溃报告中提供总体应用程序状态

在全局异常处理程序/崩溃报告中提供总体应用程序状态
EN

Software Engineering用户
提问于 2019-10-16 10:38:22
回答 1查看 96关注 0票数 2

在我的UI应用程序(WPF/C#,使用MVVM设计模式)中,我实现了一个全局异常处理程序,该处理程序捕获所有意外(因此是未知的)异常,并通过一个专用的“崩溃报告”窗口向用户报告应用程序崩溃。

我不想立即用整个堆栈跟踪来轰击用户,我希望有一行文本,或者说“没有修改数据--您处于安全的一边”,或者“数据处理失败了--您的数据可能不一致”(或者类似的内容)。我想这会让用户对故障的程度感到放心。

为此,我的模型需要跟踪“安全部分”和“关键部分”,崩溃报告窗口需要评估该应用程序状态。

我想知道这是否是一个好主意,更重要的是,有什么合适的方法来实现这一点。我正在考虑将一个公共属性添加到Application类(我的全局异常处理程序已经驻留在该类中),然后将崩溃报告视图模型绑定到它。也许有更好的方法?

你有什么推荐信要我开始吗?

非常感谢您提前!

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2019-10-16 11:36:17

我已经实现了一个全局异常处理程序,它捕获所有意外(因此是未发现的)异常,并通过一个专用的“崩溃报告”窗口向用户报告应用程序崩溃。

好的。略显总比什么都没有好。我将假设您在应用程序中进一步进行“有用”异常处理。

而不是立即用整个堆栈跟踪轰炸用户.

不要向用户显示堆栈跟踪。

堆叠痕迹是巨大的,可怕的,充满屏幕的噪音。

您希望用户对堆栈跟踪做些什么?

就像代码在例外情况下通常不能做任何“有用”的事情一样,用户永远不能用它做任何“有用”的事情,所以不要浪费时间在它上。给他们一个信息,就这样。

当然,您应该将整个异常记录到以后可以从中检索的某个地方,但不要将其全部放在用户面前。

我想有一行文字,或者说“没有数据被修改-你在安全的一方”或者“数据处理被中止-你的数据可能是不一致的”。崩溃报告窗口需要评估此应用程序状态。

应用状态为“死亡”。

或接近它,因为这是不可能的。

您无法从“全局”异常处理程序的平流层高度角度可靠地确定关于应用程序的“状态”的任何内容--所有细节早就被异常的火箭抛到一边了--就像调用堆栈中的上升一样。

简短答覆:

如果某些事情严重到足以“取出”整个应用程序(这是调用全局异常处理程序的唯一一次),那么所有的赌注都取消了;您无法可靠地告诉用户当时发生了什么。

即使您可以编写这样的代码,您也很可能触发最初抛出的相同的OutOfMemoryException,从而掩盖了真正的问题,除了坠机报告窗口本身的问题!

您所能得到的最好结果应该是稍后可以检索的已记录的异常。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/399751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档