Ho una funzione con try, catch e finally block. Se viene rilevata un'eccezione, prendo alcuni parametri di tale eccezione come il suo codice di errore, il messaggio di errore e il messaggio e lo stampano in un file Excel. Metto il codice specifico in basso:Eccezione nel blocco catch
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();
}
Il problema è, in precedenza ho avuto un pezzo di codice come
catch(Exception ex)
{
ExcelRecorder(ex.Message);
}
A quel tempo, tutte le eccezioni è stato essere scoperti. Ma, in seguito, il requisito è stato modificato in quanto era necessario acquisire anche il codice di dettaglio dell'errore e il messaggio di dettaglio dell'errore. Così, ho cambiato il mio blocco catch con catch (System.ServiceModel.FaultException ex) in quanto mi ha permesso di recuperare quei parametri. Ma ora, certe eccezioni non vengono intrappolate nel blocco delle catture. Come posso modificare il blocco catch in modo da poter rilevare tutte le eccezioni?
Bene, è possibile avere più blocchi di cattura. – V4Vendetta