【发布时间】:2012-04-02 23:27:20
【问题描述】:
假设我有这个代码:
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;
}
}
【问题讨论】:
-
@Steve Gates:当您认为必须将空列表的情况作为一种特殊情况来处理时,那么这是一个特殊的问题。当然,这里可能有你想要使用事件而不是异常的原因,例如,当 MyMethod 本身是一个事件处理程序(或它的一部分)并且不应抛出任何异常时。但是因为性能原因争论这个——当你没有遇到任何真正的性能问题时——几乎总是一个完全错误的方法。
标签: c# .net design-patterns