可以说我有这样的代码:何时抛出一个异常时处理问题优雅
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");
}
现在有一个空的列表不是一个特殊的问题,所以我应该用它优雅的应对。一种方法是提出事件来通知问题。只是让我想知道为什么我不提高事件,如果参数为空。
什么是此类问题的最佳做法?
事件处理程序实例:
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;
}
}
的可能重复[更好,以检测异常并把他们或者只是让运行时扔?](http://stackoverflow.com/questions/9976870/is-better-to-detect-for-exceptions-and -throw了他们,或者,刚刚让运行时抛出,它们) – 2012-04-02 13:56:26
@Steve盖茨:当你认为你不得不应付一个空列表作为特殊情况的话,那么*是*一个特殊的问题。当然,也可能有这样的原因,你为什么要在这里使用事件而不是异常,例如,当MyMethod本身是一个事件处理器(或其一部分),并且不会抛出任何异常。但是,由于性能方面的原因 - 当你不面对任何真正的性能问题 - 时争论这个问题 - 几乎总是一个完全错误的方法。 – 2012-04-02 14:57:13