Virheiden ja poikkeusten käsittely Delphi-sovelluksissa

Valitettavasti rakennussovellukset sisältävät koodauksen. Riippumatta siitä kuinka huolellisesti kirjoitat / debug ohjelmasi, on mahdotonta kuvitella kaikkia tilanteita, jotka voivat mennä pieleen. Kokematon käyttäjä voi esimerkiksi yrittää avata olemattoman tiedoston tai syöttää virheellisen arvon tietokenttään.
Käyttäjät tekevät virheitä, ja meidän pitäisi olla valmiita käsittelemään / estämään näitä virheitä missä ja milloin mahdollista.

Virheet, poikkeukset?

Poikkeus on yleensä virhetila tai jokin muu tapahtuma, joka keskeyttää sovelluksen normaalin suorittamisvirran. Aina kun koodirivin käsittelyssä tapahtuu virhe, Delphi luo (nostaa) TObjectista syntyvän objektin, jota kutsutaan poikkeusobjektiksi.

Suojatut lohkot

Sovellus vastaa poikkeukseen joko suorittamalla jokin lopetuskoodi, käsittelemällä poikkeusta tai molempia. Tapa sallia virheiden / poikkeusten jäljittäminen annetussa koodissa, poikkeuksen on tapahduttava suojatussa lauseiden lohkossa. Yleinen koodi näyttää seuraavalta:

yrittää. {vartioitu koodilohko} paitsi. aloitetaan. {poikkeuslohkokahvat SomeException} loppu; end;
instagram viewer

kokeile / paitsi lause suorittaa suojatun koodilohkon lauseet. Jos lauseet toteutuvat ilman, että tehdään poikkeuksia, poikkeuslohko jätetään huomioimatta ja ohjaus siirretään loppusanan jälkeiseen lauseeseen.

Esimerkki:

... Nolla: = 0; yrittää. nukke: = 10 / nolla; paitsi. EZeroDivide-palvelussa. MessageDlg ('Ei voi jakaa nollalla!', MtError, [mbOK], 0); end;... 

Resurssien suojaaminen

Kun osa koodiosasta hankkii resurssin, on usein tarpeen varmistaa, että resurssi vapautetaan uudelleen (tai saatat saada muistivuoto) riippumatta siitä, täydentyykö koodi normaalisti vai katkaiseeko se poikkeuksen. Tässä tapauksessa syntaksi käyttää vihdoin avainsana ja näyttää seuraavalta:

{jokin koodi resurssien varaamiseen} yrittää. {vartioitu koodilohko} lopulta. {lopetusblokki - koodi vapaita resursseja varten} end;

Esimerkki:

... AboutBox: = TAboutBox. Luo (nolla); yrittää. AboutBox. ShowModal; lopulta. AboutBox. release; end;... 

Sovellus. OnException

Jos sovelluksesi ei käsittele poikkeuksen aiheuttaneen virheen, Delphi käyttää oletuspoikkeuskäsittelijää - se vain ponnahdusikkunaan. Voit harkita koodin kirjoittamista OnException-tapahtumassa TApplication -objektille virheiden vangitsemiseksi sovellustasolla.

Tauko poikkeuksista

Kun rakennat ohjelmaa, jolla on poikkeusten käsittely, et ehkä halua Delphin murtautuneen poikkeuksista. Tämä on hieno ominaisuus, jos haluat, että Delphi näyttää missä poikkeus on tapahtunut; se voi kuitenkin olla ärsyttävää, kun testaat omaa poikkeuskäsittelyäsi.

Harvat viimeiset sanat

Tämän artikkelin tarkoituksena on antaa sinulle vain nopea katsaus poikkeuksiin. Jos haluat jatkaa keskustelua poikkeusten käsittelystä, harkitse Poikkeusten käsittely Delphi-poikkeusten käsittelyssä, käyttämällä työkalua kuten Delphin onnettomuuksien / poikkeusten käsittely virheraportoinnin avulla ja joitain seuraavista liittyvistä artikkeleista: