0

私はプログラムを持っています。例外が発生した場合は、Excelシートのセルに例外メッセージを出力します。FaultException.Detail.ErrorCodeとFaultException.Detail.Messageを出力できますか?これら2つを取得して印刷するにはどうすればよいですか?サンプルコードを投稿しています

public int CreateTask(int row)
        {
            try
            {
                Console.WriteLine("Invoking CreateTask method");
                Console.WriteLine("-----------------------------------");
                m_taskID = taskClient.CreateTask(m_tInstance);
                Console.WriteLine("Task create successfully:ID=" + m_taskID.ToString());
                Console.WriteLine("-----------------------------------");

                ExcelRecorder(null, row);
            }
            catch (Exception ex)
            {                
                ExcelRecorder(ex.Message, row);
            }
            finally
            {
                GC.Collect();
            }
            return m_taskID;
        } 

FaultException.Detail.ErrorCodeとFaultException.Detail.MessageをフェッチできるようにExcelRecorder()メソッドを変更するにはどうすればよいですか?

4

2 に答える 2

1

この句を既存の句の上に追加しますcatch

        catch (FaultException<COMException> fex)
        {                
            string msg = fex.Detail.Message;
            string code = fex.Detail.ErrorCode.ToString();
            ExcelRecorder(String.Concat(msg, " - ", code), row);
        }

で例外をキャッチする必要があるとSystem.ServiceModel.FaultException<TDetail>思いTDetailますCOMException

于 2012-09-17T07:10:38.153 に答える
0

コメントに同意します。質問に正しく答えるにはさらにコードが必要ですが、提供された内容を見ると、ExcelRecorderがFaultExceptionではなくExceptionを受け取るため、Detailプロパティにアクセスできないことが問題のようです。スプレッドシートに書き込みます。

ExcelRecorderがコードの他の場所で使用されているかどうかに応じて、ExcelRecorderのコンストラクターを変更してFaultExceptionオブジェクトを取得するか、FaultExceptionオブジェクトを取得して適切にログに記録する2番目のExcelRecorderコンストラクターを作成できます。

ただし、さらに役立つように、ExcelRecorderのコードを確認する必要があります。

于 2012-09-17T07:18:19.553 に答える