方法 : リモート オブジェクトからスローできる例外の種類を作成する
このトピックの対象は、既存のアプリケーションとの下位互換性のために残されているレガシ テクノロジに特定されています。新規の開発には、このトピックを適用しないでください。分散アプリケーションは、現在は Windows Communication Foundation (WCF) を使用して開発する必要があります。
RemotingException クラスから派生させ、ISerializable インターフェイスを実装することによって、リモート オブジェクトからスローし、リモートの呼び出し元でキャッチできる独自の例外の種類を作成できます。
リモート オブジェクトからスローし、リモートの呼び出し元でキャッチできる例外の種類を作成するには
RemotingException クラスから派生するクラスを定義します。
Public Class RemotableType Inherits MarshalByRefObject Implements ISerializable ' ... End Class 'RemotableType
public class RemotableType : MarshalByRefObject{ // ... }
クラスに SerializableAttribute 属性を配置します。
<Serializable()> Public Class CustomRemotableException Inherits RemotingException ' ... End Class
[Serializable] public class CustomRemotableException : RemotingException, ISerializable { // ... }
SerializationInfo オブジェクトと StreamingContext オブジェクトをパラメーターとして受け取る逆シリアル化コンストラクターを実装します。
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)); }
例
リモート サーバー オブジェクトからスローされたときに、構成されていれば呼び出し元にコピーされる簡単な実装のコード例を次に示します。
<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
+ "\"";
}
}
}
参照
リファレンス
概念
リモート処理可能オブジェクトとリモート処理不可能オブジェクト
ビルド日:2010-02-13