title: How do you maintain code with InvalidEnumArgumentException?
body: <p>I am curious how would you maintain your code once you throw a <code>System.ComponentModel.InvalidEnumArgumentException</code>.</p>
  
  <p>Basically I have a switch statement like this:</p>
  
  <pre><code>switch (enumValue)
  {
      case MyEnum.Value1:
          break;
  
      case MyEnum.Value2:
          break;
  
      default:
          throw new InvalidEnumArgumentException();
  }
  </code></pre>
  
  <p>What if I decide to add more values to <code>MyEnum</code> in the future, for example, <code>Value3</code> and <code>Value4</code>? That would mean I would end up throwing a misleading exception. How would I prevent this?</p>
  
  <p>Should I use reflection before throwing? What exception should I throw in this case? I'm looking for suggestions.</p>
  
  <hr>
  
  <p>I just discovered this exception a couple minutes ago so maybe I am looking at this in the wrong context. Is this exception thrown when a certain enum argument is not supported (in which case <code>Value3</code> and <code>Value4</code> would not be supported)?</p>