Gewusst wie: Erstellen eines Ausnahmetyps, der von Remoteobjekten ausgelöst werden kann
Sie können einen eigenen Ausnahmetyp erstellen, der von einem Remoteobjekt ausgelöst und von einem Remoteaufrufer abgefangen werden kann, indem Sie eine Ableitung von der RemotingException-Klasse vornehmen und die ISerializable-Schnittstelle implementieren.
So erstellen Sie einen Ausnahmetyp, der von Remoteobjekten ausgelöst und von Remotaufrufern abgefangen werden kann
1. Definieren Sie eine Klasse, die von der RemotingException-Klasse abgeleitet ist.
Public Class RemotableType Inherits MarshalByRefObject
Implements ISerializable
' ...
End Class 'RemotableType
Public Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext)
_internalMessage = info.GetValue("_internalMessage", GetType(String))
End Sub
public CustomRemotableException(SerializationInfo info, StreamingContext context)
{
_internalMessage = (string)info.GetValue("_internalMessage", typeof(string));
}
Beispiel
Das folgende Codebeispiel stellt eine einfache Implementierung bereit. Falls konfiguriert, wird diese auf den Aufrufer zurückkopiert, wenn sie durch das Remoteserverobjekt ausgelöst wird.
<Serializable()> Public Class CustomRemotableException
Inherits RemotingException
Implements ISerializable
Private _internalMessage As String
Public Sub New()
_internalMessage = String.Empty
End Sub
Public Sub New(ByVal message As String)
_internalMessage = message
End Sub
Public Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext)
_internalMessage = info.GetValue("_internalMessage", GetType(String))
End Sub
Public Overrides Sub GetObjectData(ByVal info As SerializationInfo, ByVal context As StreamingContext)
info.AddValue("_internalMessage", _internalMessage)
End Sub
Public Overrides ReadOnly Property Message() As String
Get
Return "This is your custom remotable exception returning : """ + _internalMessage + """"
End Get
End Property
End Class
[Serializable]
public class CustomRemotableException : RemotingException, ISerializable
{
private string _internalMessage;
public CustomRemotableException()
{
_internalMessage = String.Empty;
}
public CustomRemotableException(string message)
{
_internalMessage = message;
}
public CustomRemotableException(SerializationInfo info, StreamingContext context)
{
_internalMessage = (string)info.GetValue("_internalMessage", typeof(string));
}
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("_internalMessage", _internalMessage);
}
// Returns the exception information.
public override string Message
{
get
{
return "This is your custom remotable exception returning: \""
+ _internalMessage
+ "\"";
}
}
}
Siehe auch
Referenz
Konzepte
Remotefähige und nicht remotefähige Objekte
Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.