title: InvalidParameterException or IllegalArgumentException
body: <p>In Java when should you throw <code>IllegalArgumentException</code> and when <code>InvalidParameterException</code>?
  Coming from a C# background we would have an <code>ArgumentNullException</code> that derived from <code>ArgumentException</code>. If I would want to implement a equivalent <code>ArgumentNullException</code>/<code>ParameterNullException</code> in Java should I extend <code>IllegalArgumentException</code> or <code>InvalidParameterException</code>?</p>
  
  <p>Note: I'm not trying to implement a <code>ArgumentNullException</code>/<code>ParameterNullException</code> this would just provide me with a better understanding if I could match up these with the C# framework.</p>