我已經創建了一個代碼。理想的代碼是: -使用excel文件進行異常處理
- 它執行函數GetTaskStatus()。我的代碼中還有其他幾個類似的功能。
- 如果任何函數發生異常,它將控件移動到ExcelRecorder()函數
- 如果在任何函數中都有這樣的異常,我必須在Excel表格中寫入FAIL,在給定行的J單元格以及同一行的K單元格中的確切異常錯誤(例如,,NullReferenceException被發現爲)。總之,J細胞是RESULT,K細胞是REMARKS。我的Excel表中有幾行。
- 如果發生任何功能也不例外,我只需要編寫PASS在給定行的殲細胞
- 我的代碼是能夠做到這一點。但是,但是,有一個問題。無論是否發生異常,我的代碼都爲我的Excel中的所有行輸入FAIL和REMARKS(雖然某些功能不會導致任何異常)
我已發佈我的代碼的主要代碼片段。任何人都可以讓我知道我要去哪裏嗎?如果函數沒有發生異常,我需要輸入PASS。
CODE低於
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();
}
使用調試器來查看爲什麼捕獲到異常。 Ctrl-Alt-E彈出「例外」對話框。選中所有框以「拋出中斷」。 – sehe