gpt4 book ai didi

c# - 在 ArgumentException 中使用参数的属性

转载 作者:行者123 更新时间:2023-11-30 19:35:36 24 4
gpt4 key购买 nike

我们的 SonarQube 经常在我们的代码中提出以下问题(代码异味):“用于 ArgumentException 的参数名称应与现有参数名称匹配”。 Here是触发此问题的规则。

触发此问题的示例如下:

private void Validate(SaveCommand command)
{
if(string.IsNullOrEmpty(command.UserCode))
throw new ArgumentNullException(nameof(command.UserCode));
....
}

我的问题是:如何正确重构代码以遵守 SonarQube(和 MSDN)指南?

或者我应该保持这样。如果是,为什么?

最佳答案

我认为 SonarQube 恰到好处:没有名为 UserCode 的参数,因此您不应将其指定为 ArgumentNullException 构造函数的参数。我会在这里完全避免使用 ArgumentNullException,因为 argument 不为 null - 否则它会在 command 处抛出 NullReferenceException .用户代码.

相反,只需使用带有描述性消息的 ArgumentException,例如

throw new ArgumentException(
$"{nameof(command.UserCode)} property cannot be null or empty",
nameof(command));

现在我们可以判断哪个参数不正确(command)以及如何(它的 UserCode proeprty 为 null 或空)。 SonarQube 应该没问题,它更准确地符合异常类型的含义 IMO。

关于c# - 在 ArgumentException 中使用参数的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53710746/

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