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.
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är ett fel uppstår från bearbetning av en kodrad skapar (höjer) Delphi ett objekt som kommer från TObject som kallas undantagsobjektet.
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 utom på börja undantag block-handtag 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; förutom på EZeroDivide gör MessageDlg ('Kan inte delas med noll!', mtError, [mbOK], 0); slutet;…
När ett avsnitt av koden förvärvar en resurs är det ofta nödvändigt att se till att resursen släpps igen (eller så kan du få ett minnesläckage), 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:
någon kod för att fördela resurser försök skyddad kodblock slutligen terminering blok - kod för att frigöra resurser slut;
Exempel:
... AboutBox: = T AboutBox.Create (noll); prova AboutBox.ShowModal; slutligen AboutBox.Release; slutet;…
Om din applikation inte hanterar felet som orsakade undantaget kommer Delphi att använda sin standardundantagshanterare - det kommer bara att visa 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å.
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.
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 Exception Handling, med ett verktyg som Delphi Crash / Exception Handling with Bug Reporting och några av följande relaterade artiklar: