Когда выкинуть исключение, а когда элегантно решить проблему - PullRequest
2 голосов
/ 02 апреля 2012

Допустим, у меня есть этот код:

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");
}

Теперь наличие пустого списка не является исключительной проблемой, поэтому я должен элегантно с ним справиться.Одним из способов является создание события для уведомления о проблеме.Просто заставляет меня задуматься, почему я не просто поднимаю событие, если аргументы нулевые.

Какова лучшая практика в этом типе проблемы?

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 Ответ

4 голосов
/ 02 апреля 2012

Если empty list не является исключительной проблемой , то не вызывайте исключение в этом случае. Exceptions для исключительных случаев. В этом случае вы можете просто вернуть некоторое boolean (скажем) значение, которое указывает, что функция не выполняется.

Если для caller этой функции это исключительный случай, то она (вызывающая сторона) вызовет исключение.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...