c# - 构造异常消息的最佳做法是什么?

标签 c# .net exception design-patterns

<分区>

当您的程序出现问题时,您可以在代码中抛出一个异常,并显示一条描述问题的消息。典型例子:

throw new Exception("Houston we have a problem");

将硬编码字符串传递给异常构造函数是否是一种好习惯?也许我应该将所有异常消息放在一个地方。请告诉我解决异常消息结构问题的最佳做法是什么。

最佳答案

正如 Tim 在评论中提到的,如果向用户显示消息,本地化可能会成为一个问题。

我在这个主题上的方法是什么,我真正想建议的是以下内容。

尽量让它通用

创建一个常量类来保存​​您的异常消息,并使用有意义的常量名称,如下所示:

public static const String IN_VARIABLE_MISSING = "An expected value is missing. Please try again";

这将使您能够在任何需要的地方实际重用异常。 (你也只需要在一个地方编辑它并在所有地方更新它)你可以构建一个包装器来处理本地化。但是这个主题有很多选择,我不会详细说明。

所以你可以像这样抛出异常:

throw new Exception(IN_VARIABLE_MISSING);

如果这是将用于商业用途的软件,我还建议编写一个扩展标准异常的自己的异常。

为什么?

您可以创建一个异常,以您的消息和数字为例,并自动为您构建一个唯一的 key ,如下所示:

IN-MODULE-NUMBER-IDENTIFICATION

你知道它在哪里可以派上用场吗?正是在本地化和更快地找到它发生的地方和为什么发生的过程中。

内部错误可以修改为在开头写INVA 用于验证错误。然后是它发生的类(class)/项目,然后是一个数字或任何你想要的。

该系统还将使您能够根据用户使用的区域设置为该键使用另一个字符串。

TL;DR 使其可重复使用!

关于c# - 构造异常消息的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45857999/

相关文章:

.net - 添加我自己的 WPF TriggerAction

c# - 使用 Mono.Cecil 重写程序集

c# - 执行多个命令行并输出

c# - 如何优化正则表达式性能?

C# JIT 编译和 .NET

c# - Asp.net 核心部署不能在服务器上运行,但可以在机器上运行

python - Django:如何引发 Http401 和 Http403 异常,如 Http404,RAISE EXCEPTION not RESPONSE

Android:如何正确初始化 YouTube 播放器内部 Activity ?

java - 我如何知道在字节码级别引发的异常的类型?

c# - CORS 实现显示 POST 请求不允许的方法