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;
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: