0

例外「不明な例外」をスローする外部クラスがあります。私は自分のコードでそれをキャッチし、「エラー! Do this steps:...」のようなメッセージを書きたいと思っています。

だから、私のコード:

try
{
    var p = new MyObject(prms); // this code failed and throw exception-"Unknown exception" 
    
    return p;
}
catch (Exception ex)
{
    // Output ex 
    Console.WriteLine("Error! "+ex.Message);
}

外部例外をラップしてテキストを表示する方法は? ありがとう!

PS 外部コードは次のようになります。

try
        {
            lock (_lockObject)
            {
                return MyObject();
            }
        }
        catch (Exception exp)
        {
            throw ThrowWrapper(exp);
        }   
4

3 に答える 3

1

クラスは例外をスローしませんが、関数は例外をスローします。のコンストラクターがMyObject例外をスローした場合、示されているコードはそれをキャッチします。throwsの別のメンバー関数の場合、このメンバー関数が呼び出される場所MyObjectが必要です。try-catch

于 2013-09-30T10:29:09.623 に答える
0

次のような単純なことをしてみませんか。

既存のコードを使用する; (キャッチのコード変更を参照)

try
{
    var p = new MyObject(prms); // this code failed and throw exception-"Unknown exception" 

    return p;
}
catch (Exception ex)
{
    If (ex.Message.Contains("Unknown exception"))
       {
         //Add code here to handle the Unknown exception
       }
    else
       {
         Console.WriteLine("Error! "+ex.Message);
       }
}

これはこれを処理する「迅速な」方法であることに注意してください。正しい方法は、独自の例外を作成し、他の回答のいくつかが示唆するようにそれを処理することです。

それが役立つことを願っています。

それはあなたが望むものを達成しませんか?

于 2013-09-30T13:07:33.950 に答える
0

「外部」例外を独自の例外内にラップする方法の良い例は、次の場所にあります: http://msdn.microsoft.com/en-us/library/vstudio/system.exception.innerexception(v=vs.90 .aspx

于 2013-09-30T12:48:19.593 に答える