TL;DR: No code should ever interrogate an Exception's Message property.
Why do many exception messages not contain useful details?
Arguably, because none of them should!
Exception Objects should carry as much information as is useful for an Exception Handler to do its job, i.e. to "handle" the Exception and make it "go away".
The class ...