gpt4 book ai didi

.net - 如果字符串为空,我应该抛出 ArgumentNullException 吗?

转载 作者:行者123 更新时间:2023-12-03 05:54:52 25 4
gpt4 key购买 nike

我正在研究一种方法,该方法可以根据给定的字符串参数执行某些操作。字符串参数的有效值是 null 或 string.Empty 以外的任何值。所以我的代码如下所示。

private void SomeMethod(string someArgument)
{
if(string.IsNullOrEmpty(someArgument))
throw new ArgumentNullException("someArgument");

// do some work
}

没有什么太令人兴奋的。我的问题是,即使字符串等于 string.Empty 也可以抛出 ArgumentNullException 吗?因为从技术上讲它不是空的。如果您认为它不应该抛出 ArgumentNullException,那么应该抛出什么异常?

最佳答案

ArgumentException对于 String.Empty 情况应该抛出。这表明存在问题而不是空值。为了避免 NullReferenceException,我首先检查 null,然后修剪并检查空的情况以防止传递任何空格。

private void SomeMethod(string someArgument)
{
if(someArgument == null)
throw new ArgumentNullException("someArgument");

if (someArgument.Trim() == String.Empty)
throw new ArgumentException("Input cannot be empty", "someArgument");

// do some work
}

从 .NET 4.0 开始,您可以使用 String.IsNullOrWhiteSpace 方法一次性执行这些检查。通过这样做,您将放弃指定细粒度异常类型的能力,因此我会选择 ArgumentException 并相应地更新消息。

关于.net - 如果字符串为空,我应该抛出 ArgumentNullException 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1355957/

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