Znav |
---|
next | Java Streaming Interfaces |
---|
prev | Intercepting Object Insertion and Extraction in C++ |
---|
|
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 (so that it will be marshaled and sent back to the client), the exception must be wrapped in a subclass of Ice::UserException
. The Dynamic Ice API provides a class to simplify this process:
Wiki Markup |
---|
{zcode:cpp}
namespace Ice {
class UserExceptionWriter : public UserException {
public:
UserExceptionWriter(const CommunicatorPtr&);
virtual void write(const OutputStreamPtr&) const = 0;
virtual bool usesClasses() const = 0;
virtual std::string ice_name() const = 0;
virtual Ice::Exception* ice_clone() const = 0;
virtual void ice_throw() const = 0;
// ...
};
typedef ... UserExceptionWriterPtr;
}
{zcode} |
A subclass of UserExceptionWriter
is responsible for supplying a communicator to the constructor, and for implementing the following methods:
void write(const OutputStreamPtr&) const
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.
bool usesClasses() const
Return true if the exception, or any base exception, contains a data member that is an object by value.
std::string ice_name() const
Return the Slice name of the exception.
Ice::Exception* ice_clone() const
Return a copy of the exception.
void ice_throw() const
Raise the exception by calling throw *this
.
See Also
Znav |
---|
next | Java Streaming Interfaces |
---|
prev | Intercepting Object Insertion and Extraction in C++ |
---|
|