0

我有一个程序。如果发生异常,我会在我的 Excel 工作表的单元格中打印异常消息。我可以打印 FaultException.Detail.ErrorCode 和 FaultException.Detail.Message 吗?我怎样才能拿到这两件事并打印出来?我发布了一个示例代码

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;
        } 

如何修改 ExcelRecorder() 方法以便可以获取 FaultException.Detail.ErrorCode 和 FaultException.Detail.Message?

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>where TDetailis COMException

于 2012-09-17T07:10:38.153 回答
0

我同意评论,您的问题确实需要更多代码才能正确回答,但是从查看您提供的内容来看,您的问题似乎是 ExcelRecorder 接受 Exception,而不是 FaultException,因此您无法访问其 Detail 属性写入您的电子表格。

根据代码中其他地方是否使用 ExcelRecorder,您始终可以修改 ExcelRecorder 的构造函数以采用 FaultException 对象,或创建第二个 ExcelRecorder 构造函数,该构造函数采用 FaultException 对象并适当地记录。

不过,我真的需要查看 ExcelRecorder 的代码以提供更多帮助。

于 2012-09-17T07:18:19.553 回答