The Ice run time throws run-time exceptions for a number of pre-defined error conditions. All run-time exceptions directly or indirectly derive from
Ice.LocalException (which, in turn, derives from
java.lang.RuntimeException).
Ice.LocalExceptions implements a
clone method that is inherited by its derived exceptions, so you can make memberwise shallow copies of exceptions.
An inheritance diagram for user and run-time exceptions appears in Figure 4.4 on
page 117. By catching exceptions at the appropriate point in the hierarchy, you can handle exceptions according to the category of error they indicate:
You will probably have little need to catch the remaining run-time exceptions; the fine-grained error handling offered by the remainder of the hierarchy is of interest mainly in the implementation of the Ice run time. However, there is one exception you will probably be interested in specifically:
Ice.ObjectNotExistException. This exception is raised if a client invokes an operation on an Ice object that no longer exists. In other words, the client holds a dangling reference to an object that probably existed some time in the past but has since been permanently destroyed.