Basically what you are suggesting is that for every possible error create a new exception class. That is problematic for a number of reasons.
1. You then end up throwing a long list of exceptions making every one catch or throw the long list. The whole point of wrapping exceptions is so that the gui only ends up having to catch a small number of exceptions
2. You end up with a large number of exception classes