.net - 将系统错误转换为友好的消息

标签 .net asp.net-mvc asp.net-mvc-4 exception-handling

我想知道是否有一种好的方法可以将系统生成的错误转换为对用户更有意义的内容。例如,如果由于某种原因应用程序无法连接到 SMTP 服务器。我想将系统抛出的消息(如“SMTP 连接失败”)转换为“我们无法向您发送电子邮件”。我想从资源文件中提取这条友好的消息。虽然这是此类异常(exception)的一个示例,但可能还有更多。

我们没有跨所有层的 try catch block 。它仅存在于 UI 层中。我们有一个异常管理类,它接受所有异常并从中返回一个友好的字符串。 UI 层中的每个 catch block 都会调用此异常管理类,并向其传递一个 System.Exception 类型的异常,该异常的方法需要返回所述友好错误字符串,以便在 UI 上使用。

我现在能想到的唯一方法是在异常管理类中有一个大的 IF ELSE block ,它检查接收到的异常字符串并从资源文件中提取匹配的友好消息。

有没有更好的方法来解决这个问题?

最佳答案

这就是为什么要使用 try catch 来捕获异常。只需将它与特定错误类型一起使用,而不是一般错误类型。这样您就可以在 catch block 中显示任何消息。但不建议在 catch block 中重新抛出自定义异常。在您的情况下,您可以捕获 System.Net.Mail.SmtpException

关于.net - 将系统错误转换为友好的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15674970/

相关文章:

c# - SQL SMO - 检查用户是否是服务器管理员

c# - 在列表中搜索列表中的元素

asp.net-mvc - ASP.NET核心: session expires but user is not redirected to login page

asp.net-mvc-4 - 在 MVC 4 的下拉列表中选择一个默认值

c# - 如何解决以下错误 : cannot convert from 'int' to 'System. Collections.Generic.IEnumerable<int>?

ASP.NET MVC 应用程序设置 loginUrl 接受

.net - 为什么.NET 中没有 IArray(T) 接口(interface)?

.net - 如何在卸载时清理用户设置文件?

c# - .net C# 中不安全正常吗?

c# - 创建一个 'website builder' - 我将如何构建它?