如何解决从WPFC#.Net应用程序中的异常属性中识别异常起源
我最近被分配了一个任务来扩展现有的WPF(C#.Net)应用程序以用于错误处理程序。处理程序应该显示一条友好的消息,并为用户提供可能的简便解决方案。要求我几乎不更改任何代码=我只能在后面的App.xaml.cs代码中工作。我的方法是尝试从堆栈跟踪和最内部异常的属性中识别错误。到目前为止,我正在使用这三个标识符:
string identifierMethod= new System.Diagnostics.StackTrace(ex.GetBaseException()).GetFrame(0).GetMethod().Name;
string identifierObject = ex.GetBaseException().TargetSite.ReflectedType.FullName;
string identifierHResult = ex.GetBaseException().HResult.ToString();
//ex is the uppermost exception coming to App
我需要确定异常发生的根方法和对象。将这三个标识符结合起来似乎对我来说很奏效,但我认为它不是非常干净和强大,我担心可能会有一些例外情况,使这三个标识符重复出现。有时,最里面的异常的堆栈跟踪为null,在我看来,有时标识符没有真正描述导致异常的最下面的方法或对象构造函数。 我知道我可以理想地使用“异常数据”或“源”属性在“异常”起源的try catch块中分配一些标识符,但我根本做不到。我知道有人问过类似的问题,但他们只给了我我现在所拥有的。
非常感谢您的任何建议和想法。
解决方法
您可以使用 Checked Exceptions 来宣布有关被调用者异常的调用者方法。在调用方方法中,您可以轻松地按类型处理异常,识别异常来源,并获得友好的消息。
要将 Checked Exception 功能添加到 C#
中,您可以使用以下 nugget 包:Portia.Roslyn.CheckedException。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。