何时抛出异常以及何时优雅地处理问题

时间:2012-04-02 13:32:38

标签: c# .net design-patterns

假设我有这段代码:

public void MyMethod(string Data, List<string> InputData)
{
  //I would assume throwing an exception for nulls would be correct
  if (String.IsNullOrWhiteSpace(Data) || InputData == null)
    throw new ArgumentNullException("Oops");

  if (InputData.Count == 0) 
    //throw exception or use event to raise a problem
    //throw Exception("Empty List")
    //if (DisplayError != null)
    //  DisplayError("Empty List");
}

现在有一个空列表并不是一个特殊问题所以我应该优雅地应对它。一种方法是引发事件以通知问题。只是让我想知道为什么我不提出事件,如果参数为null。

此类问题的最佳做法是什么?

EventHandler示例:

public class MyOtherClass
{
  public event Action<string,List<string>> ItFired;

  public void DoSomething()
  {
     if(ItFired != null)
       ItFired(myString, myList);
  }
}

public class AnotherClass
{
     public void DoSomething()
     {
           var otherclass = new MyOtherClass();
           var myClass = new MyClass();

           otherClass.ItFired += myClass.MyMethod;
     }

}

1 个答案:

答案 0 :(得分:4)

如果empty list 不是特殊问题 在这种情况下不引发异常Exceptions适用于特殊情况。在这种情况下,您只需返回一些boolean(比较)值,表示该函数未执行。

如果该函数的caller是一个例外情况,那么它(调用者)将引发异常。

祝你好运。