Tengo una función con try, catch y finally block. Si se detecta una excepción, entonces capturo ciertos parámetros de esa excepción, como su código de error, mensaje de error y mensaje, e imprimo en un archivo de Excel. De Publicación código correspondiente a continuación:Excepción no quedar atrapado en el bloque 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();
}
El problema es, antes que estaba teniendo un pedazo de código como
catch(Exception ex)
{
ExcelRecorder(ex.Message);
}
En ese momento, todas las excepciones se queden atrapados. Pero, más tarde, el requisito cambió, ya que necesitaba capturar el código de detalle de error y el mensaje de error. Entonces, cambié mi catch block por catch (System.ServiceModel.FaultException ex) ya que me permitió buscar esos parámetros. Pero ahora, ciertas excepciones no quedan atrapadas en el bloque catch. ¿Cómo puedo cambiar mi bloque catch para que pueda detectar todas las excepciones?
Bueno, puede tener varios bloques catch. – V4Vendetta