For example,

```
switch (number)
{
    case 1: return DoOne();
    case 2: return DoTwo();
    case 3: return DoThree();
    case 4: return DoFour();

    default:
        throw new ???Exception("Unexpected number encountered.");
}

```

For the sake of this question, please assume:

* `number` is a private field in a class
* It is a class invariant that `number` should always be between 1 and 4; everything else indicates a bug in this class. In other words, if the exception triggers, it is *never* the caller’s fault but *always* the class’s author’s.

What is the correct exception to throw in this case?