try、catch、finallyブロックの関数があります。例外がキャッチされた場合、そのエラーコード、エラーの詳細メッセージ、およびメッセージなどのその例外の特定のパラメータをキャッチし、それをExcelファイルに出力します。下記の関連するコードを掲載しています:問題は、以前の私はその時catchブロックに例外がキャッチされない
catch(Exception ex)
{
ExcelRecorder(ex.Message);
}
のようなコードの一部を持っていたさ
public void UpdateGroup(String strSiteID, String strGroup, int row)
{
try
{
Console.WriteLine("UpdateGroup");
Excel1.MWMClient.MWMServiceProxy.Group group = new Excel1.MWMClient.MWMServiceProxy.Group();
group.name = "plumber";
group.description = "he is a plumber";
Console.WriteLine(groupClient.UpdateGroup(strSiteID,group));
ExcelRecorder(0, null, null, row);
}
catch (System.ServiceModel.FaultException<DefaultFaultContract> ex)
{
ExcelRecorder(ex.Detail.ErrorCode, ex.Detail.Message, ex.Message, row);
}
finally
{
System.GC.Collect();
}
}
public void ExcelRecorder(int error, string detailmessage, string message, int row)
{
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"D:/WebServiceTestCases_Output.xlsx");
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
if (!string.IsNullOrEmpty(message))
{
((Range)xlWorksheet.Cells[row, "M"]).Value2 = "FAIL";
((Range)xlWorksheet.Cells[row, "N"]).Value2 = error;
((Range)xlWorksheet.Cells[row, "O"]).Value2 = detailmessage;
((Range)xlWorksheet.Cells[row, "P"]).Value2 = message;
}
else
{
((Range)xlWorksheet.Cells[row, "M"]).Value2 = "PASS";
((Range)xlWorksheet.Cells[row, "N"]).Value2 = "";
((Range)xlWorksheet.Cells[row, "O"]).Value2 = "";
((Range)xlWorksheet.Cells[row, "P"]).Value2 = "";
}
xlWorkbook.Save();
xlWorkbook.Close(0,0,0);
xlApp.Quit();
}
、すべての例外は捕まるました。しかし、後で、エラー詳細コードとエラー詳細メッセージを取得する必要があるため、要件が変更されました。だから、キャッチブロック(catch)(System.ServiceModel.FaultException ex)を変更しました。私はそれらのパラメタを取得することができました。しかし、現在では、特定の例外がキャッチブロックに捕捉されていません。どのように私はすべての例外を捕まえることができるようにキャッチブロックを変更することができますか?
まあ、複数のキャッチブロックを持つことができます。 – V4Vendetta