Pregunta

Estoy tratando de detectar una excepción 'específica' (FormateXception^o OverflowException^) y luego volver a lanzarlo y atraparlo en el bloque de captura de excepción 'general' (excepción^).

Cuando se ejecuta, le doy una excepción de formato a través de la entrada. Luego obtengo este error en un cuadro de diálogo: "Una excepción no controlada del tipo 'System.FormateException' ocurrió en FutureValue.exe Información adicional: La cadena de entrada no estaba en un formato correcto". Cuando hago clic en 'Break', me lleva a la línea # 232.

Aquí está el código parcial:

try
{
...
}
catch(FormatException^ ex)
{
      MessageBox::Show("FormatException Occured.  Message: " + ex->Message);
      throw;
}
***line# 232*** catch(OverflowException^ ex)
{
      MessageBox::Show("Overflow Occured. Message: " + ex->Message);
      throw;
}
catch(Exception^ ex)
{
      MessageBox::Show("TESTING");
}
¿Fue útil?

Solución

La expresión de Rethrow (tirar sin asignación_expresión) hace que el objeto arrojado originalmente sea Rethrown. Debido a que la excepción ya ha sido atrapada en el alcance en el que ocurre la expresión de retrograbación, se vuelve a salir al siguiente bloque de try de adjunción dinámica. Por lo tanto, no se puede manejar mediante bloques de captura en el alcance en el que ocurrió la expresión de retroceso.

Tomando en cuenta, es posible que desee escribir su código así:

try
{
    try
    {
       //...
    }
    catch(FormatException^ ex)
    {
          MessageBox::Show("FormatException Occured.  Message: " + ex >Message);
          throw;
    }
    catch(OverflowException^ ex)
    {
          MessageBox::Show("Overflow Occured. Message: " + ex->Message);
          throw;
    }
}
catch(Exception^ ex)
{
      MessageBox::Show("TESTING");
}

Otros consejos

¿Hay un bloque de captura de intentos sobre esto?

Simplemente lanzaste una excepción con la declaración de lanzamiento, nadie la está atrapando. El depurador te ha llevado a donde se lanzó la excepción

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top