Because in most cases; you'll need to know exactly what went wrong.
Was it caused by wrong input, was a service you're trying to reach not available? For each different type of exception, you might want to implement a different handling.
If, for instance, the user provides invalid input, something's wrong, and you may want to erase the wrong information. If the DB is not accessible, you may want to write it away in memory, and re-try later, when the db becomes accessible.
For a technical exception (database not accessible, .... ) you don't want the same handling as for a business exception (user providing input that makes no sense, for instance).
After all, for the first type, you are responsible. you'll need to de-bug your code.
For the second type, your user just should read the users manual, and learn to work with the software.
These are just examples, tons of them around.