gpt4 book ai didi

c# - 如果列表/集合为空或 null 且无法迭代(不是参数),抛出什么异常类型?

转载 作者:可可西里 更新时间:2023-11-01 08:08:48 25 4
gpt4 key购买 nike

假设一个简单的例子,其中一个方法检索一个集合(例如包含一些配置字符串的列表)并尝试以某种方式检查它:

void Init()
{
XmlDocument config = new XmlDocument();
config.Load(someXml);
var list = config.SelectNodes("/root/strings/key"); // Normally, list should not be null or empty

if (list == null || list.Count == 0)
throw new SomeExceptionType(message); // What kind of exception to throw?

// Iterate list and process/examine its elements
foreach (var e in list) ...
}

在此特定实例中,如果未检索到任何内容,则该方法无法正常继续。我不确定在这种情况下应该抛出什么异常类型。据我所知,我的选择是:

  • 不手动抛出任何东西,让 NullReferenceException 被抛出自动(不处理空列表情况),

  • 抛出自定义异常类型(可能不是一个好主意,因为我预计调用者不会尝试对异常做任何事情,即他不会寻找要处理的特定异常类型),

  • 做点别的吗?

最佳答案

Enumerable.First 如果集合为空,则抛出 System.InvalidOperationException。我猜你也可以。

throw new InvalidOperationException("Sequence contains no elements");

https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.first?view=netframework-4.8

关于c# - 如果列表/集合为空或 null 且无法迭代(不是参数),抛出什么异常类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18637958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com