Freigeben über


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

ContextBoundObject

Konzepte

Remotefähige und nicht remotefähige Objekte

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.