Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在列表中循环何时引发空引用异常?_C#_Exception_Exception Handling_Nullreferenceexception - Fatal编程技术网

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
是两个您永远不应该捕获的异常,因为您不可能处理它们。您也不应该捕获一般的
异常
;始终捕获特定的异常类型。一般来说,文档将告诉您哪些函数抛出异常,以及在什么条件下抛出这些异常。好的,谢谢大家的反馈。这很有帮助