Table of Contents Previous Next
Logo
Client-Side Slice-to-C++ Mapping : 6.10 Mapping for Run-Time Exceptions
Copyright © 2003-2007 ZeroC, Inc.

6.10 Mapping for Run-Time Exceptions

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 Ice::Exception). Ice::LocalException has the usual member functions (ice_name, ice_clone, ice_throw, and (inherited from Ice::Exception), ice_print, ice_file, and ice_line).
An inheritance diagram for user and run-time exceptions appears in Figure 4.4 on page 112. By catching exceptions at the appropriate point in the hierarchy, you can handle exceptions according to the category of error they indicate. For example, a ConnectTimeoutException can be handled as any one of the following exception types:
• Ice::Exception
This is the root of the complete inheritance tree. Catching Ice::Exception catches both user and run-time exceptions.
• Ice::UserException
This is the root exception for all user exceptions. Catching Ice::UserException catches all user exceptions (but not run-time exceptions).
• Ice::LocalException
This is the root exception for all run-time exceptions. Catching Ice::LocalException catches all run-time exceptions (but not user exceptions).
• Ice::TimeoutException
This is the base exception for both operation-invocation and connection-establishment timeouts.
• Ice::ConnectTimeoutException
This exception is raised when the initial attempt to establish a connection to a server times out.
You will probably have little need to catch exceptions by category; the fine-grained error handling offered by the remainder of the hierarchy is of interest mainly in the implementation of the Ice run time.
Table of Contents Previous Next
Logo