This is really ugly - can you please come up with a nice solution.

What about defining a new exception class which simply takes two params?
Or you define an exception class for each case and use an array to lookup the error message and the hint in two strings.