Esaminare la soluzione per la sfida try-catch

Completato

Il codice seguente è una possibile soluzione per la sfida dell'unità precedente:

try
{
    Process1();
}
catch
{
    Console.WriteLine("An exception has occurred");
}

Console.WriteLine("Exit program");

static void Process1()
{
    try
    {
        WriteMessage();
    }
    catch
    {
        Console.WriteLine("Exception caught in Process1");
    }

}

static void WriteMessage()
{
    double float1 = 3000.0;
    double float2 = 0.0;
    int number1 = 3000;
    int number2 = 0;

    Console.WriteLine(float1 / float2);
    Console.WriteLine(number1 / number2);
}

In questa soluzione il Process1 metodo è stato aggiornato per usare il try-catch modello. Il metodo WriteMessage viene chiamato nel blocco di codice try, che consente a Process1 di rilevare l'eccezione prima che venga rilevata dalla clausola catch nelle istruzioni di primo livello.

L'esecuzione di questa applicazione genera l'output richiesto:

∞
Exception caught in Process1
Exit program

Si noti che poiché l'eccezione viene intercettata all'interno di Process1, il blocco di codice catch nelle istruzioni di primo livello non viene eseguito. I vantaggi ottenuti rilevando eccezioni a livelli diversi nello stack di chiamate diventano più evidenti quando vengono rilevati tipi di eccezione specifici. Verranno esaminati i tipi di eccezione nell'unità successiva.

Se hai avuto successo in questa sfida, congratulazioni! Continuare con l'unità successiva.

Importante

Se non si è riusciti a risolvere questa sfida, è consigliabile rivedere le unità precedenti prima di procedere.