我创建了一个代码。理想情况下,代码的作用是:-
- 它执行函数GetTaskStatus()。我的代码中还有其他几个类似的功能。
- 如果任何函数发生异常,它会将控件移动到 ExcelRecorder() 函数
- 如果因此在任何函数中捕获到异常,我必须在给定行的 J 单元格中的 Excel 工作表中写入 FAIL ,并且在同一行的 K 单元格中写入确切的异常错误(例如,找到 NullReferenceException)。简而言之,J 单元格是 RESULT,K 单元格是 REMARKS。我的 excel 表中有几行。
- 如果任何函数都没有发生异常,我只需要在给定行的 J 单元格中写入 PASS
- 我的代码能够做到这一点。但是,有一个问题。无论是否发生异常,我的代码都在为我的 excel 中的所有行输入 FAIL 和 REMARKS(尽管某些函数不会导致任何异常)
我已经发布了我的代码的主要片段。谁能让我知道我哪里出错了?如果函数没有发生异常,我需要输入 PASS。
代码如下
public void GetTaskStatus()
{
try
{
Console.WriteLine("Invoking GetTaskStatus method");
Console.WriteLine("------------------****-----------------");
m_taskStatus = taskClient.GetTaskStatus(m_taskID);
Console.WriteLine("Task status : " + m_taskStatus.taskStatus.ToString());
Console.WriteLine("-----------------------------------");
}
catch (Exception ex)
{
MessageBox.Show("An exception has occured. Please check the Excel sheet for more info", "Exception Caught" + ex);
ExcelRecorder(true, ex.Message);
}
finally
{
GC.Collect();
}
}
public void ExcelRecorder(bool isExceptionalData, string message)
{
MessageBox.Show("ExcelRecorder method reached when exception occurs");
//Code for recording into excel should be written here
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"D:/dsds.xlsx");
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;
int numSheets = xlWorkbook.Sheets.Count;
for (int row = 2; row <= rowCount; row++)
{
if (isExceptionalData)
{
((Range)xlWorksheet.Cells[row, "J"]).Value2 = "FAIL";
((Range)xlWorksheet.Cells[row, "K"]).Value2 = message;
}
else
{
((Range)xlWorksheet.Cells[row, "J"]).Value2 = "PASS";
}
}
xlWorkbook.Save();
xlWorkbook.Close(0,0,0);
xlApp.Quit();
}