Question: Suppose a simple example where a method retrieves a collection (such as a list containing some configuration strings) and tries to examine it in some way:

```
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) ...
}

```

In this specific instance, the method cannot continue normally if nothing was retrieved. I'm unsure what exception type to throw in such situations. My options are, as far as I know:

* throw nothing manually and let `NullReferenceException` be thrown
automatically (which doesn't handle empty list situation),
* throw custom exception type (probably not a good idea, as I don't anticipate the caller will try to do anything about the exception,
i.e. he won't be looking for a speecific exception type to handle),
* do something else?

Answer: 
You can create your own exception type for appropriate logic:

```
public class InitializationException : Exception
{
}

```

and then:

```
throw new InitializationException {Message = "Collection is empty"};

```
`Enumerable.First` throws `System.InvalidOperationException` if the collection is empty. So could you, I guess.

```
throw new InvalidOperationException("Sequence contains no elements");

```

<https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.first?view=netframework-4.8>