Osztályok kivételek Delphi, Delphi, Delphi komponens Delphi forrás

Osztályok kivételek Delphi

Osztályok említett kivételek kezdődő „E” betű, és az alap osztály egyszerűen hívják Kivétel. Ez a bázis osztály tartalmazza a szükséges funkciókat, hogy örökli az összes hibát tárgyakat. Itt lehet kiválasztani az üzenet tulajdonság. amely egy hibaüzenetet és együttműködik a fájlt az eszköz, amelyen keresztül lehet hívni egy súgó fájlt leíró hibáról.

A könyvtár VCL előre kellően nagy számú osztályok különböző típusú hibák, és azok örökösei Kivétel. Például EinOutError osztály felel meg az input-output hiba. Ezek a hibák akkor jelentkeznek, amikor hozzáférését a lemezeket.

Ha hiba történik, akkor létrehoz egy objektumot, amely az utódja a megfelelő osztályban a hiba típusát. Például, ha hiba történik IO, a példány EinOutError osztály jön létre.

Nézzük a példát 8.10 ábra, ahol a hiba feldolgozó egység próbálom osztani több nullával, ami tilos. Az eredmény megosztásra változóban tároljuk t. Kérjük, vegye figyelembe, hogy ezt követően azt ellenőrizni, ha. Ez az ellenőrzés teljesen értelmetlen, és csak fokozta a szétválás után legalább néhány utalás változó. Ha nincs fellebbezés nem, akkor Delphi látja értelmetlensége a körzet és az optimalizáló nem teszi.

t, R: Double; kezdődik try r: = 0; t: = 10 / r; ha t> 0, akkor kilép; kivéve
// folyamat input-output error

A EinOutError do kezdődik

ShowMessage ( 'Oshibochka IO'); végén;

// feldolgozása osztás nullával

EZeroDivide nem kezdődik.

ShowMessage (Nos, akkor nem nullával osztani. "+ E.Message); végén; Else // Egyébként

ShowMessage (nem értem, hogy mi ez, de valami történt ');

Ebben az esetben, kivéve a blokk feldolgozó egység két különböző típusú hibák. Annak ellenőrzésére, hogy a bemeneti és kimeneti hiba történt írásakor a következő mondat:

A [változó. ] Klass_oshibki nem kezdődik

// IO hiba vége;

Ha szó szerint lefordítani, mi van írva itt, ez a következőképpen néz ki: a hiba esetén programfuttatási között kezdetét és végét. Megjegyezzük, hogy a i változó szögletes zárójelben. Ez azt jelenti, hogy a változó növény nem feltétlenül azt, amit csinálunk a feldolgozása az input-output error:

A EInOutError do kezdődik

Shovfllessage ( 'Oshibochka IO'); végén;

Abban az esetben, hiba okozta ShowMessage funkció, amely megjeleníti a képernyőn egy párbeszédpanel egy üzenettel, amely meghatározott paraméterként.

Most nézzük meg, hogy hogyan kezeljük a hibát osztás nullával:

az e: EZeroDivide nem kezdődik

ShowMessage (Nos, akkor nem nullával osztani. "+ E.Message); végén;

Hiba osztás nullával felel EZeroDivide osztályban. Mielőtt a hibát osztály írt egy változó nevű f. Rajta keresztül találunk egy hibaüzenet, mint ez e.Message.

Ezen kívül, kivéve a jegyzék 8,10 egység áll még a más kulcsszó, mint a logikai művelet. Felhívjuk figyelmét, hogy vége után közvetlenül előtte még érdemes pontosvessző, bár tudjuk, hogy ez nem szükséges, hogy. Szükségtelen csak logikai műveleteket. Ebben az esetben más használt kivételkezelés, és a művelet után az adott kulcsszó végrehajtásra kerül, mielőtt a hiba nem került feldolgozásra. Azaz, ha volt egy hiba, hogy nem került feldolgozásra a blokk hiba nem fogja végrehajtani, hogy a kód után a mást.

Tehát, megpróbál létrehozni egy új alkalmazás, őt a gombra, és nyomja meg, hogy írni a kódot listában 8.10. Fuss a minta, és jobb csinálni Delphi. Most próbálja nyomni a gombot. Hiba történik, és a Delphi elfogja az irányítás, mutasd meg a kódsort, ahol a kivétel bekövetkezett, és megjelenít egy párbeszédpanelt a hibát leíró üzenet.

Miután látta a kódsort, ahol a hiba történt, nyomjuk . A program folytatásához. Ezen a ponton, a vezérlés a programunk, és akkor megjelenik egy üzenet, hogy megmutatjuk a ShowMessage funkciót a kivételével blokk.

Ha fut a program nem Delphi. és aktiválható a fájlkezelő futtatható fájl, amely a Delphi. akkor abban az időben a hiba, akkor csak látni a második üzenet, amit megjelenítéséhez használja SenMessage funkciót.

Üzenetek lehet előállítani nem csak a futási idő, hanem kézzel. Hogy létrehoz egy üzenetet, használja raise utasítás. Ezt követően, az üzemben tartó határozza meg a hiba objektumot. Ez egy objektum, azaz a. E objektumpéldányt hibákat.

Lássuk, hogyan lehet manuálisan generál IO hiba. Ahhoz, hogy hozzon létre egy új objektumot az ebbe az osztályba, meg kell hívni a create módszer, de ez a módszer küldött egy üzenetet, hogy jelenik meg, ha a kiváltó esemény.

Tehát hozz létre egy kivitelező visszavezet bennünket egy példány az IO hiba. Úgy van, hogy adja meg, miután egy emelés nyilatkozata:

emelje EinOutError.Create (IO error ');

Hozhat létre saját hiba osztály, hogy növeljék a képességeit, mint a szíve vágyik, és azt használjuk. Lássuk, hogyan fog kinézni egy példát. Hozzon létre egy osztályt MyException, melyik lesz az utódja a szülő osztály összes hiba - Kivétel:

MyException = osztály (Kivétel) nyilvános

funkció MyException.GetSomeStr: String;

Eredmény: = „Ez az én string„;

Most helyezzük egy gombot a forma és préselt, írd be az alábbi kódot: próbálja

emelje MyException.Create ( 'test'); kivéve e: MyException do

A részben igyekszünk manuálisan létre hibát saját típusú MyException. A csak mi elkapjam a hibát, és a ShowMessage funkció megjeleníti az eredményeket GetSomeStr funkciót. Ez mind szép és egyszerű.

Segítség a projekt! Küld erről az oldalról: