gpt4 book ai didi

C# 是否存在异常 ID

转载 作者:行者123 更新时间:2023-11-30 14:13:59 25 4
gpt4 key购买 nike

我的软件使用 Try Catch 来捕获错误;最近发生错误(与数据库的连接超时)并弹出 Messagebox.Show() 提醒用户该问题。这种内部软件的最终用户根本不具备 IT 知识。收到这条信息的女士问我她和谁失去了联系(老实说,我认为她认为这是一种精神上的“联系”,因为她看起来像个嬉皮士)。

所以我想做的是简化错误消息。

我考虑过的事情:

我可以检查/比较 ex.Message 字符串与我想要满足的字符串列表,如果匹配,我将显示简化版本。国际海事组织,不现实。

然后我想到有多个捕获,如果它是某种类型,则显示简单消息。但是我的代码会变得多么困惑!不仅如此,它还可能以误导性消息结束,因为并非所有(例如)TimeOutExceptions 都是相同的。

或者,我必须尝试编写自己的异常类型来满足这一要求。

然后我认为如果每个 .NET 异常都有一个关联的 ID 会非常方便 - 那样的话,我可以用每个 ID 和我自己的漂亮且易于准备/理解的消息编写一个很好的 case 语句。

有没有其他人考虑过这个问题,他们有没有找到任何合适的安排。还是直接在屏幕上显示一条消息“错误 - 已向软件供应商发送电子邮件...”会更好?

最佳答案

您永远不应向最终用户显示 Exception.message。这是有助于识别错误类型的信息性文本。

任何时候你捕捉到异常,你都应该正确地处理它或者重新抛出/抛出另一个。如果您正处于通过显示一些错误消息来处理异常的代码点,您应该能够从异常本身正确地推断出上下文。您可以使用适当的异常类型来创建一些基本的异常域(DatabaseException、CommunicationException),并使用错误代码在其域内进一步区分异常。

您可以使用属于 Exception 类并且是 IDictionary 类型的 Data 属性,从而作为异常状态包。然后,您可以在此处存储诸如 'ERR_CODE' = CONSTANT 之类的内容,并具有一些单点异常处理来检查错误代码,如果存在,则使用一些用户友好的输出来处理异常。

您甚至可以在当前 AppDomain 中注册全局异常处理程序以捕获任何未捕获的异常并显示一些消息。这是常见的做法,但您必须意识到这种方法会破坏自然代码流,如果发生这种情况,您将留下已处理的异常但未捕获的异常流(您没有在调用者站点上处理异常然后不知道调用失败并且可能表现出不可预测的行为)。因此,仅通过打印一些用户友好的消息并结束应用程序或终止当前用例来使用此方法。

关于C# 是否存在异常 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13064317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com