title: Why do most exceptions omit instance-specific information?
body: <p>I've noticed that most exception messages don't include instance-specific details like the value that caused the exception. They generally only tell you the "category" of the error.</p>
  
  <p>For example, when attempting to serialize an object with a 3rd. party library, I got a MissingMethodException with message: </p>
  
  <blockquote>
    <p>"No parameterless constructor defined for this object."</p>
  </blockquote>
  
  <p>In many cases this is enough, but often (typically during development) a message like</p>
  
  <blockquote>
    <p>"No parameterless constructor defined for this object of type 'Foo'."</p>
  </blockquote>
  
  <p>can save a lot of time by directing you straight to the cause of the error.</p>
  
  <p>InvalidArgumentException is another example: it usually tells you the name of the argument but not its value.
  This seems to be the case for most framework-raised exceptions, but also for 3rd party libraries.</p>
  
  <p><strong>Is this done on purpose?</strong></p>
  
  <p>Is there a security implication in exposing an internal state like the "faulty" value of a variable?</p>