Предположим, что простой пример, когда метод извлекает коллекцию (например, список, содержащий некоторые строки конфигурации), и пытается каким-то образом изучить его:
void Init()
{
XmlDocument config = new XmlDocument();
config.Load(someXml);
var list = config.SelectNodes("/root/strings/key"); // Normally, list should not be null or empty
if (list == null || list.Count == 0)
throw new SomeExceptionType(message); // What kind of exception to throw?
// Iterate list and process/examine its elements
foreach (var e in list) ...
}
В этом конкретном случае метод не может продолжаться нормально, если ничего не было получено. Я не знаю, какой тип исключений нужно бросить в таких ситуациях. Мои параметры, насколько я знаю:
-
ничего не бросать вручную и
NullReferenceException
бросать автоматически (который не обрабатывает ситуацию с пустым списком), -
введите настраиваемый тип исключения (возможно, это не очень хорошая идея, поскольку я не ожидаю, что вызывающий объект попытается что-либо сделать с исключением, то есть он не будет искать специальный тип исключения для обработки),
- сделать что-то еще?