私は、例外を強制してSystem.SRから例外メッセージを取得しようとしている愚かなWinCEアプリケーションを持っています。デバイスに展開されるdll。WinCEが.NET CF 2.0の別の例外のメッセージテキストを見つけようとすると、FileNotFoundExceptionがスローされる
私は、次のされて例外をスローしたコード:
TcpClient client = new TcpClient("abcd", 1234);
しかしのSocketExceptionが、それは、メッセージの解決しようとすると、それは次のようtacktraceを設定してFileNotFoundExceptionをスロー:システムで
.Reflection.Assembly.InternalGetSatelliteAssembly()at System.Reflection.Assembly.GetSatelliteAssembly() at System.ResourcesManager.InternalGetResourceSet() at System.Resources.Resour System.Net.SocketsでSystem.SRSupport.HasStringで)(System.SRSupport.HasStringで)(System.Resources.ResourceManager.GetStringで)( ceManager.GetString()System.SR.HasStringで () System.Net.SocketsでSystem.Net.Dns.GetHostEntry() でSystem.Net.Dns.ResolveInternalでSystem.Net.Sockets.SocketException..ctorで.SocketException.makeMessage() () () 。 TcpClient.Connect() at System.Net.Sockets.TcpClient..ctor() at WinCeMessage.Com.SocketBlaster.Blast() at WinCeMessage.Form1.button1_Click() at System.Windows.Forms.Control.OnClick () にSystem.Windows.Form Microsoft.AGL.Forms.EVL.EnterMainLoopでSystem.Windows.Forms.Control._InternalWnProcでs.Button.OnClick System.Windows.Forms.ButtonBase.WnProcで() () () ()システムで 。 WinCeMessage.Program.MainでWindows.Forms.Application.Run() ()
(私は信じている)これらのメッセージが保存されたファイルがデバイスにデプロイさSystem.SR.dll、あります私はVisual Studioでそれを実行します。エミュレータをドッキングし、ファイルが存在することを確認しました。
これは例外をスローSystem.SR.dllからのコードです:あなたはTcpClient()
メソッドが例外を投げている、あなたはそれをキャッチすることができません
internal Assembly InternalGetSatelliteAssembly(CultureInfo culture, Version version, bool throwOnFileNotFound)
{
if (culture != null)
{
Assembly assembly = null;
AssemblyName name = this.GetName();
if (name != null)
{
name.Version = version;
name.CultureInfo = culture;
if (name.Name != null)
{
name.Name = string.Concat(name.Name, ".resources");
name.CodeBase = null;
}
try
{
StackCrawlMark stackCrawlMark = StackCrawlMark.LookForMyCaller;
assembly = Assembly.BCL_System_Reflection_Assembly_LoadFromName(name, false, null, ref stackCrawlMark);
}
catch (IOException oException)
{
assembly = null;
}
if (assembly != null)
{
if (assembly == this)
{
if (!throwOnFileNotFound)
{
return null;
}
else
{
throw new FileNotFoundException();
}
}
}
else
{
if (!throwOnFileNotFound)
{
return null;
}
else
{
throw new FileNotFoundException();
}
}
}
return assembly;
}
else
{
throw new ArgumentNullException();
}
}
はい。私のstacktraceを見て、SocketExceptionコンストラクタは実際には例外が見つからないファイルをスローします:System.Net.Sockets.SocketException..ctor()。また、これはコンパクトなフレームワークに特有のものです。完全なフレームワークは、このような例外メッセージを参照する必要はありません – MStodd
私はこのTcpClientのオーバーロードがホストとポートを指定できることを知っていますが、引数を受け付けないバージョンもあります。私は後でそれを加えることができると思います。あなたもそのバージョンの爆弾ですか?時には1つのバージョンは動作しませんが、別のバージョンは動作します。 – jp2code
例外がスローされなかった場合、私のテストは役に立たなくなります。私は正しい例外メッセージがロードされることを保証できるように、例外がスローされるようにしようとしています。現在、それは起こっていない – MStodd