Domanda

Sto cercando di catturare un'eccezione "specifica" (formAtexception^o overflowException^) e poi di lanciarlo e catturarlo nel blocco di cattura "Exception^).

Quando eseguo, gli do un'eccezione del formato attraverso l'input. Ho quindi ottenuto questo errore in una finestra di dialogo: "Un'eccezione non gestita del tipo 'System.Formatexception' si è verificata in FutureValue.exe Informazioni aggiuntive: la stringa di input non era in un formato corretto." Quando faccio clic su 'Break' mi ci vuole alla riga n. 232.

Ecco il codice parziale:

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");
}
È stato utile?

Soluzione

L'espressione di Rethrow (lancio senza ASSEGNZIONE_Expression) fa ripercare l'oggetto originariamente lanciato. Poiché l'eccezione è già stata catturata nell'ambito in cui si verifica l'espressione di Rethrow, è rivolta al successivo blocco di prova dinamicamente. Pertanto, non può essere gestito dai blocchi di cattura nell'ambito in cui si è verificata l'espressione di Rethrow.

Prendendo in considerazione sopra, potresti voler scrivere il tuo codice in questo modo:

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");
}

Altri suggerimenti

C'è un blocco di cattura sopra questo?

Hai appena lanciato un'eccezione con la dichiarazione di lancio, nessuno la sta catturando. Il debugger ti ha portato dove è stata lanciata l'eccezione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top