関数を作成し、その中で例外処理を行いました。また、関数で例外が発生したかどうかを識別するメソッドを作成しました。
例外が発生した場合、行 2 の J セルに PASS/FAIL が記録され、行 2 の K セルに FAIL の場合は例外の詳細も記録されます。
コードを実行すると、Excel シートが FAIL で更新されました (意図的に例外を発生させたため)。しかし、Excel シートを開くと、行 2 の J セルに FAIL が含まれ、行 2 の K セルに「例外」が含まれていることがわかりました。
理想的には、行 2 の K セルに、「コードで DivideByZeroException が見つかりました」のような例外の正確なテキストを含める必要があります。
コードを投稿しました。そこに間違いはありませんか?何か不足していますか?
public int CreateMyTask()
{
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("-----------------------------------");
WriteResultInExcel(false, "");
return m_taskID;
}
catch(Exception ex)
{
WriteResultInExcel(true, ex.Message);
}
}
private void WriteResultInExcel(bool isExceptionalData, string message)
{
Excel.ApplicationClass excelApp = new ApplicationClass();
Workbook workbook = excelApp.Workbooks.Open("C:\\myexcelsheet.xls", 0, false, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
Worksheet worksheet = (Worksheet)workbook.Sheets.get_Item(1);
if(isExceptionalData)
{
((Range)worksheet.Cells["2", "J"]).Value2 = "FAIL";
((Range)worksheet.Cells["2", "K"]).Value2 = message;
}
else
{
((Range)worksheet.Cells["2", "J"]).Value2 = "PASS";
}
workbook.Save();
workbook.Close(0, 0, 0);
excelApp.Quit();
}