As in the case of Ice objects, a Dynamic Ice application may represent user exceptions in a native format that is not directly compatible with the Ice API. If the application needs to raise such a user exception to the Ice run time, the exception must be wrapped in a subclass of Ice.UserException
. The Dynamic Ice API provides a class to simplify this process:
Java
package Ice; public abstract class UserExceptionWriter extends UserException { public UserExceptionWriter(Communicator communicator); public abstract void write(Ice.OutputStream os); public abstract boolean usesClasses(); // ... }
A subclass of UserExceptionWriter
is responsible for supplying a communicator to the constructor, and for implementing the following methods:
void write(OutputStream os)
This method is invoked when the Ice run time is ready to marshal the exception. The subclass must marshal the exception using the encoding rules for exceptions.
boolean usesClasses()
Return true if the exception, or any base exception, contains a data member that is an object by value.