방법: 원격 개체에서 throw할 수 있는 예외 형식 만들기

RemotingException 클래스에서 파생시키고 ISerializable 인터페이스를 구현하여 원격 개체가 throw하고 원격 호출자가 catch할 수 있는 고유한 예외 형식을 만들 수 있습니다.

원격 개체가 throw하고 원격 호출자가 catch할 수 있는 예외 형식을 만들려면

  • 1. 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));
 }

예제

다음 코드 예제에서는 구성된 경우 원격 서버 개체가 throw할 때 호출자로 다시 복사되는 단순한 구현을 제공합니다.

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

참고 항목

참조

ContextBoundObject

개념

원격으로 사용 가능한 개체 및 사용 불가능한 개체

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.