The mapping for exceptions (see Section 18.9) generates a constructor that accepts values for data members, so we can simplify this example by changing our
raise statement to the following:
If you throw an arbitrary Python run-time exception, the Ice run time catches the exception and then returns an
UnknownException to the client. Similarly, if you throw an "impossible" user exception (a user exception that is not listed in the exception specification of the operation), the client receives an
UnknownUserException.
If you throw an Ice run-time exception, such MemoryLimitException, the client receives an
UnknownLocalException.
1 For that reason, you should never throw system exceptions from operation implementations. If you do, all the client will see is an
UnknownLocalException, which does not tell the client anything useful.