Exception

.::Home::.

.::Introduzione::.

1.Panoramica

4.DataBase

.::Presentazioni PPT::.

.::Link::.

.::DownLoad::.

 

La gestione degli errori riveste una parte fondamentale in ogni linguaggio di programmazione.

I vecchi linguaggi di programmazione facevano un pesante uso dello statement if per permettere al programmatore di rilevare eventuali errori di runtime.

Al contrario i moderni linguaggi come C++, Java e C# basano la loro strategia di rilevamento degli errori sull'isolamento del codice. Parte del codice che potrebbe portare ad un errore viene isolato in un blocco, e se un errore dovesse avvenire, verrebbe intercettato e gestito localmente. Il tempo ha dimostrato che questo approccio funziona.

C# segue l'approccio di C++ e Java per la gestione degli errori, sollevando eccezioni sugli errori.

Si utilizza il blocco try ... catch ... finally :

Si isola il codice che potrebbe condurre ad un errore con il try, e quando l'errore avviene il controllo del programma è passato al codice contenuto entro catch. Con l'opzionale finally del codice in esso contento può essere eseguito indipendentemente che l'errore si sia verificato o meno.

Ecco la sintassi completa

try {
  // codice che puņ portare ad un errore
}
catch (Exception Type [ variable ]) {
  // codice che deve essere eseguito quando avviene l'errore
}
finally {
  // codice da eseguire che avvenga o meno
  // l'errore
}

Si noti che contrariamente a Java la variabile dell'oggetto exception nella parte catch è opzionale.

Ecco un programma che tenta di aprire il file C:\NotThere.txt. Indipendentemente che ci riesca o meno, poi lo chiude.

La "@" indica che @"C:\NotThere.txt" è una Verbatim String (stinga alla lettera), ovvero una stringa che deve essere intesa "così com'è" senza interpretare i caratteri contenuti, visto che il backslash "\" potrebbe essere valutato come sequenza di escape.

In alternativa si può scrivere: "C:\\NotThere.txt"

using System;
using System.IO;

public class App {
   public static void Main() {
      FileStream fs = null;
      try {
         fs = new FileStream(@"C:\NotThere.txt", FileMode.Open);
      }
      catch (Exception e) {
         Console.WriteLine(e.Message);
      }
      finally {
         if (fs != null) fs.Close();
      }
   }
}

I messaggi di errore del runtime sono solitamente esaustivi.

Fonti:

Documentazione .NET Framework SDK

http://msdn.microsoft.com/theshow/Episode008/Richter.html

http://www.oreillynet.com/pub/a/dotnet/2001/09/04/error_handling.html

.::^top^::.

(2002) A cura di Carlo Becchi