gpt4 book ai didi

c# - 如何在自定义方法中处理错误的参数值?

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:56 31 4
gpt4 key购买 nike

我有一个类 SortelList作为私有(private)字段:此列表的每个元素都有一个 string作为键和自定义数据作为值。当我调用 Update我的类的方法,我指定键和数据,并且:

  • 如果列表不包含指定的键,则向列表添加一个新条目;
  • 否则,当前数据将更新为指定的数据(因此不会抛出异常)。

    public class Cache
    {
    private SortedList<string, Data> _list;

    // ... constructors and other methods

    public void Update(string key, Data value, int number)
    {
    Data data;
    if (this._list.TryGetValue(key, out data))
    {
    // update data using value and number
    //
    // ...

    _list[key] = data; // overwrite the previous data with the updated data
    }
    else
    {
    _list.Add(key, value);
    }
    }
    }

因此,即使您指定了重复键,此类也永远不会抛出异常。但是number的值argument 必须是正数,那么小于或等于零的值应该被忽略。排除这些值的更好方法是什么?

  • 我可以忽略小于或等于零的值:if (number <= 0) return;
  • 我可以制作 Update方法返回一个 bool 值,所以:if (number <= 0) return false;
  • 我可以制作 Update方法在非正数时抛出异常。

最佳答案

我会抛出 ArgumentOutOfRangeException ,像这样:

public void Update(string key, Data value, int number)
{
if (number <= 0)
{
throw new ArgumentOutOfRangeException("number must be positive");
}
// Rest of the method
}

这是绝大多数 .Net 框架在验证参数时遵循的模式。

另一种方法是让 Update 方法返回一个 bool 值,指示操作是否成功。这对于允许您的 API 用户调用该方法而不抛出异常(如使用 TryParse 方法)很有用,但是在这种情况下没有必要,因为该方法的用户已经可以简单地通过在调用方法之前检查 number 参数的值来简单地避免抛出异常。

关于c# - 如何在自定义方法中处理错误的参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9327543/

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