C# 在列表中循环何时引发空引用异常?
我以前没有做过太多的异常处理(对编码来说相当陌生),我不确定在哪里需要捕获异常,在哪里应该没有异常可以捕获 具体来说,我想知道如何遍历列表。我应该在循环列表的任何地方捕获空引用异常吗 我认为答案是否定的,因为我有单元测试,测试循环通过列表的代码,当列表没有元素时,它们不会抛出异常C# 在列表中循环何时引发空引用异常?,c#,exception,exception-handling,nullreferenceexception,C#,Exception,Exception Handling,Nullreferenceexception,我以前没有做过太多的异常处理(对编码来说相当陌生),我不确定在哪里需要捕获异常,在哪里应该没有异常可以捕获 具体来说,我想知道如何遍历列表。我应该在循环列表的任何地方捕获空引用异常吗 我认为答案是否定的,因为我有单元测试,测试循环通过列表的代码,当列表没有元素时,它们不会抛出异常 所以,我想知道。我如何知道什么时候应该捕获在列表中循环的空引用异常,以及什么时候不需要该异常?如果列表为空,则不会出现NullReferenceException。您可以在空容器上进行迭代 如果容器本身有可能为null
所以,我想知道。我如何知道什么时候应该捕获在列表中循环的空引用异常,以及什么时候不需要该异常?如果列表为空,则不会出现
NullReferenceException
。您可以在空容器上进行迭代
如果容器本身有可能为
null
,则在循环之前,应使用简单的If
检查此问题。不过,一开始不要让它变成null
,这可能是一个很好的做法。在这种情况下,如果您得到了一个您希望不是null
的容器,而不是试图接受它是null
的事实,那么就会抛出一个argumentNullReferenceException
,如果您的列表为空,那么将不会出现NullReferenceException
。您可以在空容器上进行迭代
如果容器本身有可能为
null
,则在循环之前,应使用简单的If
检查此问题。不过,一开始不要让它变成null
,这可能是一个很好的做法。在这种情况下,如果您得到的容器不是null
而不是试图满足以下事实:只有当列表中的元素设置为null(例如,它自己的生命周期使其为空),则才可能失败。如果没有元素并且您试图访问某个元素,它应该抛出outofbounds异常。NullReferenceException
永远不应该被特别捕获,因为它总是表示代码中存在错误。您应该只捕获可以专门处理异常并采取措施解决问题的异常。不要捕获表示代码中存在错误的异常,也不要捕获您无法处理的异常NullReferenceException
和OutOfMemoryException
是两个您永远不应该捕获的异常,因为您不可能处理它们。您也不应该捕获一般的异常
;始终捕获特定的异常类型。一般来说,文档将告诉您哪些函数抛出异常,以及在什么条件下抛出这些异常。好的,谢谢大家的反馈。只有当列表中的元素设置为null(例如,它自己的生命周期设置为null)时,这才有助于LOT,您将获得NullReferenceExcpetion。如果没有元素并且您试图访问某个元素,它应该抛出outofbounds异常。NullReferenceException
永远不应该被特别捕获,因为它总是表示代码中存在错误。您应该只捕获可以专门处理异常并采取措施解决问题的异常。不要捕获表示代码中存在错误的异常,也不要捕获您无法处理的异常NullReferenceException
和OutOfMemoryException
是两个您永远不应该捕获的异常,因为您不可能处理它们。您也不应该捕获一般的异常
;始终捕获特定的异常类型。一般来说,文档将告诉您哪些函数抛出异常,以及在什么条件下抛出这些异常。好的,谢谢大家的反馈。这很有帮助