title: Right exception to throw for the lack of a system property
body: <p>Say I have a system property <code>MY_PROP</code>:</p>
  
  <pre><code>java -DMY_PROP="My value"
  </code></pre>
  
  <p>This property is necessary for my system to work. </p>
  
  <p>What is the right exception to throw if this property is not set?</p>
  
  <pre><code>@PostConstruct
  private void init() {
  
      myProp = System.getProperty("MY_PROP");
      if (myProp == null) {
          throw new ????
      }
      // ...   
  }
  </code></pre>
  
  <p>Somehow <code>IllegalArgumentException</code> does not feel right. Maybe <code>IllegalStateException</code>, <code>MissingResourceException</code>, <code>TypeNotPresentException</code>? What is the standard practice for this scenario?</p>