c# - 何时检查空值

标签 c# exception-handling

这是一个开放式问题,但我正在尝试通过异常处理方面的良好实践来提高我的技能,特别是在一般情况下检查空值的时间。

我基本上知道什么时候检查空值,但我不得不说有一半时间我不知道,这让我很困扰。我知道除非您使用可为空的 int,否则不能将 int 设置为 null。我知道字符串可以设置为 null 或空,因此您可以检查 IsNullOrEmpty。

显然,在构造函数中,您还想在那里添加显式检查。这是一个给定的。而且我认为您应该在将数组、通用对象或其他对象传递到可以设置为 null 的方法时检查是否为 null,基本上对吗?

但是这里还有更多异常处理。例如,我不知道什么时候总是在代码中明确检查并抛出空引用异常。如果我有传入参数,通常很简单,但在某些情况下我会问自己,是否需要显式抛出空值?

我真的没有具体的例子,但想知道是否有一个很好的引用资料真正讨论了异常处理以及何时抛出它们(在方法、类中,随便你怎么说)。

最佳答案

你不应该抛出 NullReferenceException。如果它是一个 null 参数,则抛出 ArgumentNullException

我更喜欢检查公共(public)/ protected 方法的所有引用类型参数是否为 null。对于私有(private)方法,如果您确定所有调用都将始终具有有效数据,则可以省略检查。

关于c# - 何时检查空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1488787/

相关文章:

c# - Unity 3 和错误 "The type name or alias "xxxxx“无法解析。请检查您的配置文件并验证此类型名称。”

c# - 使用 C# 正则表达式排除字符串匹配

c++ - 如何抛出 C++ 异常

java - 如何在 JAX-RS 异常上使用自定义消息设置 40X 错误?

c# - 我如何吞下所有异常并保护我的应用程序免于崩溃?

c# - 为什么使用 `foreach` 循环数组对象比 lambda `ForEach` 更快?

c# - 支持 Https 的 Localhost HttpListener - 一段时间后停止工作

ruby - 如何捕获 "ignore"异常?

c# - 事务必须在连接可用于执行sql语句之前被释放

c# - 如何替换 C# 位图中相同颜色的色调变化?