Omgaan met fouten en uitzonderingen in Delphi-toepassingen

Helaas omvat het bouwen van applicaties codering. Ongeacht hoe zorgvuldig je je programma schrijft / debugt, het is onmogelijk om je elke situatie voor te stellen die mis kan gaan. De onervaren gebruiker kan bijvoorbeeld proberen een niet-bestaand bestand te openen of een slechte waarde in een gegevensveld invoeren.
Gebruikers maken fouten en we moeten bereid zijn om deze fouten waar en wanneer mogelijk te behandelen / voorkomen.

Fouten, uitzonderingen?

Een uitzondering is meestal een fout of een andere gebeurtenis die de normale uitvoeringsstroom in een toepassing onderbreekt. Wanneer een fout het gevolg is van het verwerken van een coderegel, maakt (verhoogt) Delphi een object-afstammeling van TObject genaamd het uitzonderingsobject.

Bewaakte blokken

Een toepassing reageert op een uitzondering door een beëindigingscode uit te voeren, de uitzondering af te handelen of beide. De manier om het vastleggen van fouten / uitzonderingen binnen een bepaalde code mogelijk te maken, moet de uitzondering binnen een bewaakt blok met verklaringen zijn. De algemene code ziet eruit als:

 probeer beveiligd blok code behalve op begin beginnen uitzondering blok-grepen SomeException einde; einde; 

EEN probeer / behalve statement voert de statements in het bewaakte codeblok uit. Als de instructies worden uitgevoerd zonder dat er uitzonderingen worden opgeworpen, wordt het uitzonderingsblok genegeerd en wordt de controle doorgegeven aan de instructie na het eindwoord.

Voorbeeld:

... Nul: = 0; probeer dummy: = 10 / nul; behalve op EZeroDivide do MessageDlg ('Kan niet delen door nul!', mtError, [mbOK], 0); einde;… 

Bronnen beschermen

Wanneer een gedeelte van de code een bron verwerft, is het vaak noodzakelijk om ervoor te zorgen dat de bron opnieuw wordt vrijgegeven (of u kunt een geheugenlek krijgen), ongeacht of de code normaal wordt voltooid of wordt onderbroken door een uitzondering. In dit geval gebruikt de syntaxis Tenslotte zoekwoord en ziet eruit als:

 enige code om middelen toe te wijzen probeer beveiligd blok code eindelijk beëindiging blok - code om middelen vrij te maken einde; 

Voorbeeld:

… AboutBox: = TAboutBox.Create (nul); probeer AboutBox.ShowModal; eindelijk AboutBox.Release; einde;… 

Application.OnException

Als uw toepassing de fout die de uitzondering heeft veroorzaakt niet verwerkt, gebruikt Delphi de standaard uitzonderingshandler - er verschijnt een berichtvenster. U kunt overwegen om in de OnException-gebeurtenis voor TApplication-object code te schrijven om fouten op applicatieniveau vast te leggen.

Break On uitzonderingen

Wanneer u een programma bouwt met uitzonderingsverwerking, wilt u misschien niet dat Delphi uitzonderingen verbreekt. Dit is een geweldige functie als je wilt dat Delphi laat zien waar een uitzondering is opgetreden; het kan echter vervelend zijn wanneer u uw eigen uitzonderingsbehandeling test.

Enkele laatste woorden

Het idee van dit artikel is om u slechts een korte blik te geven op wat uitzonderingen zijn. Voor verdere discussie over het afhandelen van uitzonderingen, overweeg om uitzonderingen af ​​te handelen in Delphi Exception Handling, met behulp van een tool zoals Delphi Crash / Exception Handling met Bug Reporting en enkele van de volgende gerelateerde artikelen: