Tyvärr inkluderar byggnadsprogram kodning. Oavsett hur noggrant du skriver / felsöker ditt program kommer det att vara omöjligt att föreställa sig varje situation som kan gå fel. Den oerfarna användaren kan till exempel försöka öppna en icke-befintlig fil eller mata in ett dåligt värde i ett datafält.
Användare gör misstag och vi bör vara beredda att hantera / förhindra dessa fel var och när det är möjligt.
Fel, undantag?
Ett undantag är i allmänhet ett feltillstånd eller en annan händelse som avbryter det normala flödet av körning i en applikation. Närhelst ett fel uppstår från bearbetning av en kodrad skapar (höjer) Delphi ett objekt som kommer från TObject som kallas undantagsobjektet.
Bevakade block
En applikation svarar på ett undantag antingen genom att utföra någon termineringskod, hantera undantaget eller båda. Sättet att aktivera felsökning av undantag inom en given kod måste undantaget ske inom ett skyddat block av uttalanden. Den allmänna koden ser ut som:
Prova. {skyddad kodblock} bortsett från. on do börjar. {undantag block-handles SomeException} slut; slutet;
EN försök / utom uttalande kör uttalanden i det skyddade kodblocket. Om uttalanden utförs utan att några undantag tas upp ignoreras undantagsblocket och kontrollen överförs till uttalandet efter slutordet.
Exempel:
... Noll: = 0; Prova. dummy: = 10 / Noll; bortsett från. på EZeroDivide do. MessageDlg ('Kan inte dela med noll!', MtError, [mbOK], 0); slutet;...
Skydda resurser
När ett kodavsnitt förvärvar en resurs är det ofta nödvändigt att se till att resursen släpps igen (eller så kan du få en minnesförlust), oavsett om koden slutförs normalt eller avbryts av ett undantag. I det här fallet använder syntaxen till sist sökord och ser ut som:
{viss kod för att fördela resurser} Prova. {skyddad kodblock} till sist. {termineringsblock - kod för att frigöra resurser} slutet;
Exempel:
... AboutBox: = TAboutBox. Skapa (noll); Prova. AboutBox. ShowModal; till sist. AboutBox. Släpp; slutet;...
Ansökan. OnException
Om din applikation inte hanterar felet som orsakade undantaget, kommer Delphi att använda sin standardundantagshanterare - den dyker bara upp en meddelanderuta. Du kan överväga att skriva kod i händelsen OnException för TApplication-objekt för att fånga fel på applikationsnivå.
Bryta på undantag
När du bygger ett program med undantagshantering kanske du inte vill att Delphi bryter mot undantag. Detta är en fantastisk funktion om du vill att Delphi ska visa var ett undantag har inträffat; det kan dock vara irriterande när du testar din egen undantagshantering.
Få sista ord
Idén med den här artikeln är att ge dig bara en snabb titt på vad undantag är. För ytterligare diskussioner om undantagshantering, överväga Om hantering av undantag i Delphi undantagshantering, med ett verktyg som Delphi Crash / Undantagshantering med felrapportering och några av följande relaterade artiklar: