Delphi - Globális hibakezelés

forráskód letöltése
Ha egy alkalmazásunkban hiba keletkezik, akkor ezt megfoghatjuk, ha az adott helyen használjuk a try..except..end blokkot. Viszont a forráskód minden helyére nem tehetünk ilyeneket, sokszor ez felesleges is lenne. Hiba persze ekkor még történhet és a Delphi-s alkalmazásunk ezt le is kezeli, gyönyörű angol nyelvű hibaüzeneteket küldözgetve a felhasználóinknak. Ezt elkerülendő érdemes készítenünk egy olyan hibakezelő eljárást, mely globális alkalmazásunkra nézve, vagyis bárhol keletkezzen a hiba, ha ott nincs try..except..end blokk, akkor erre az eljárásunkra kerül a vezérlés. Így bármilyen, előre nem látható hibát kezelhetünk saját magunk. Ehhez az TApplication osztály OnException eseményét kell felhasználnunk. Célszerű a program indulásakor egy megfelelő eljárást értékül adnunk. Ezek után, ha a programunkban hiba keletkezik, akkor ez az eljárás lesz meghívva.
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnException:=DoException;
end;

Ezen eljárásban pedig tetszőlegesen kezelhetjük a létrejött hibát. Paraméterként kapunk egy Exception típusú osztályt, melyből megtudhatjuk a létrejött hiba okát is.
procedure TForm1.DoException(Sender: TObject; E: Exception);
begin
  ListBox1.Items.Add(E.Message+' ['+E.ClassName+']');
end;