방법: 원격 개체에서 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
+ "\"";
}
}
}
참고 항목
참조
개념
Copyright © 2007 by Microsoft Corporation. All rights reserved.