Partager via


Comment : créer un type d'exception qui peut être levé par des objets distants

Vous pouvez créer votre propre type d'exception qui peut être levé par un objet distant et intercepté par un appelant distant dérivant de la classe RemotingException et implémentant l'interface ISerializable.

Pour créer un type d'exception qui peut être levé par des objets distants et intercepté par des appelants distants

  • 1. Définissez une classe qui dérive de la classe RemotingException.

    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));
 }

Exemple

L'exemple de code suivant fournit une implémentation simple qui, configurée, est copiée et retournée à l'appelant lorsqu'elle est levée par l'objet serveur distant.

<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
          + "\"";
            }
        }
    }

Voir aussi

Référence

ContextBoundObject

Concepts

Objets accessibles à distance et objets non accessibles à distance

Footer image

Copyright ©2007 par Microsoft Corporation. Tous droits réservés.