対応するエラーコードを取得する方法はありExceptions
ますか?メッセージの代わりにスローされた例外エラーコードが必要なので、エラーコードに基づいて、ユーザーに適切なメッセージを表示します。
26242 次
3 に答える
8
あなたがwin32エラーコードを探しているなら、それはWin32Exception
クラスで利用可能です
catch (Win32Exception e)
{
Console.WriteLine("ErrorCode: {0}", e.ErrorCode);
}
単純な古いCLR例外の場合、整数のエラーコードはありません。
あなたが説明する問題を考えると、例外のタイプごとにリソース文字列を取得するためのミリムースのソリューションを使用します。
于 2013-03-17T15:45:38.770 に答える
5
例外の全体的なポイントは、単なるエラーコードよりも豊富な情報を提供することです。デフォルトでは、1つはなく、実際には必要ありません。エラーコードを使用したい場合は、すべての例外を派生させる独自の例外基本クラスを使用できます。
public abstract class MyExceptionBase : Exception
{
public int ErrorCode { get; set; }
// ...
}
そうは言っても、私は気にしません。個人的には、タイプ名を使用して例外をエラーメッセージにマップします。
ResourceManager errorMessages = ...;
errorMessages.GetString(ex.GetType().FullName);
(リソースに文字列をフォーマットさせ、例外プロパティをそれらに補間するなど、より柔軟なスキームを作成することもできます。)
于 2013-03-17T15:47:34.290 に答える
3
管理対象例外にアップグレードされたCOM例外の場合、プロパティから「エラーコード」を次のように取得できます。HResult
try {
// code goes here
} catch(System.IO.FileNotFoundException ex) {
Console.WriteLine(
String.Format("(HRESULT:0x{1:X8}) {0}",
ex.Message,
ex.HResult)
);
}
ただし、すべての例外に意味のあるHResultセットがあるわけではありません。
.NET 3.0、3.5、および4.0の場合、リフレクションを使用して、HResult
マークされているプロパティの値を取得する必要がありprotected
ます。
于 2013-03-17T15:47:40.450 に答える