VistaDB 5
Serialization of Exceptions

VistaDB supports the ability to serialize VistaDB exceptions.

There is a sample application included (called SerializeExceptions) that demonstrates how to do this from code.

To serialize an exception using a SOAP formatter looks like this:

Serializing a VistaDB Exception for SOAP
Copy Code
VistaDBException deserializedExceptionSoap;

// This FileStream is used for the serialization as a SOAP object // You can open this soap file and read it as an XML document
using (FileStream streamSOAP = new FileStream("NewException.soap", FileMode.Create))
{
    // Serialize the exception to the soap file
    SoapFormatter formatterSOAP = new SoapFormatter(null, new StreamingContext(StreamingContextStates.File));
    formatterSOAP.Serialize(streamSOAP, ex);
    // Rewind the streamSOAP and deserialize the exception.
    streamSOAP.Position = 0;
    deserializedExceptionSoap = (VistaDBException)formatterSOAP.Deserialize(streamSOAP);
}
// Throw the deserialized exception again.
throw deserializedExceptionSoap; 

Same example using a BinaryFormatter to put the data to disk.

Serializing a VistaDB Exception for Disk
Copy Code
VistaDBException deserializedExceptionSoap;
// Do the same thing with a binary formatter
using (FileStream streamBinary = new FileStream("NewException.bin", FileMode.Create))
{
    BinaryFormatter formatBinary = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.File));
    formatBinary.Serialize(streamBinary, ex);
    streamBinary.Position = 0;
    VistaDBException deserializedExceptionBinary = (VistaDBException)formatBinary.Deserialize(streamBinary);

    Console.WriteLine("Serialized the exception, and then deserialized the resulting stream into a new VistaDBException. ");
}

// Throw the deserialized exception again.
throw deserializedExceptionBinary; 
See Also