Fejlett Python fejlesztési tanfolyam
Fejezet
>
Szint

Kivételkezelés
Egyéni kivételosztályok testreszabása

Célkitűzés

Ellenőrizze az összegyűjtött esővizet, és győződjön meg róla, hogy azt megfelelően dolgozzák fel és továbbítják, kivételosztályok testre szabásával.

A tetőkomplexum távoli végén egy tartály található az összegyűjtött esővíz számára, melyet szűrnek és különféle célokra juttatnak el az épületben. Néhány szelep az felső falon szabályozza a beáramló víznyomást, míg az utolsó raktárban különféle vízmelegítők kapnak helyet. A gépek működtetése kihívást jelenthet, ám hatékonyan optimalizálható a hibakódok meghatározásával és megfelelő ellenintézkedések bevezetésével. Ezt úgy érheted el, hogy testre szabott kivételosztályokat hozol létre a saját egyedi kivételeidhez.

A kódszerkesztőben két egyedi kivételosztály van definiálva, amelyeket elengedhetetlenül meg kell tanulnod használni a gépszerelési problémák elhárításához. Az első kivétel a víznyomás hibakeresését segíti. Ezt a szelepekkel együtt kell használni annak ellenőrzésére, hogy a víz megfelelően áramlik-e be az épületbe, illetve szükséges-e a nyomás beállítása. Attól függően, hogy a nyomás kevesebb-e, mint 100, vagy meghaladja-e a 300 értéket, a kivétel eltérő műveletet hajt végre; a nyomás értékét a felhasználónak kell megadnia argumentumként. Aktiválás esetén egy egyedi felugró ablak jelenik meg, ami hibakódot és üzenetet tartalmaz.

class PressureError(Exception): def __init__(self, pressure, message="Water pressure is offset, pressure is: ", error_code=404): self.pressure = pressure self.message = message self.error_code = error_code super().__init__(self.message) async def eval(self): await player.display("[Error: %s {%s %s}]" % (self.error_code , self.message, self.pressure)) if self.pressure < 100: return ("Valve has been closed") if self.pressure > 360: return ("Valve has been opened")

A második egyedi kivételosztály a vízmelegítők hőmérsékletének szabályozására szolgál. Ha a hőmérséklet túl alacsony vagy túl magas, akkor új hőmérsékletet kell megadnod argumentumként a hiba kijavításához.

class TemperatureError(Exception): def __init__(self, temp, message="Temperature is not appropiate, enter new temperature: ", error_code=808): self.temp = temp self.message = message self.error_code = error_code super().__init__(self.message) async def eval(self): await player.display("[Error: %s {%s %s}]" % (self.error_code , self.message, self.temp)) return ("Temperature Corrected")

Kezdésként sétálj a zöld szőnyegen található világos X jelzéshez, és fordulj a szelepvel rendelkező tartály felé, melyből négy (4) szelep szabályozza a cisternából pumpált víz nyomását. Négy (4) változó állandó van: green_pressure, red_pressure, blue_pressure és orange_pressure, amelyek az adott színű szőnyegek tartályainak nyomását tárolják.

Minden világos X jelzésnél használd a try / except és else kódrészletek sorozatát annak ellenőrzésére, hogy az egyes tartályok nyomása megfelelő-e. Ha a nyomás kevesebb, mint 100, vagy nagyobb, mint 300, akkor emeld a saját PressureError kivételt, és add át paraméterként a nyomást. Aktiválás esetén a hibakódot dobja, és elindítja a javítást, egyébként az else ág fut, megerősítve, hogy a tartály nyomása megfelelő. Például:

try: if green_pressure < 100 or green_pressure > 360: raise PressureError(green_pressure) except PressureError as x: error = await x.eval() player.speak(error) else: player.speak( "Pressure is appropriate" )

Ismételd meg ezt minden világos X jelzésnél, a megfelelő szőnyegszínekhez tartozó változó állandókat használva, és szükség szerint ellenőrizd vagy állítsd be a nyomásszelepeket.

Miután elkészültél, sétálj a fényes arany X jelzéshez, és használd az open() függvényt, hogy belépj a vízmelegítős raktárba. Amint belépsz, sétálj arra az arany X jelzésre, amely a raktáron belül található, és használd a read() függvényt, hogy elolvasd a pultra helyezett emlékeztetőt. Ez az emlékeztető megadja, hogy mi az egyes vízmelegítők ideális hőmérséklete.

Ha megvannak az adatok az egyes hőmérsékletekről, sétálj át a lila szőnyegen található sötét X jelzéshez, ahol a try/except és else kódszekvenciát használjuk annak ellenőrzésére, hogy a vízmelegítők megfelelő hőmérsékleten működnek-e. Négy (4) további változó állandó tartozik a szőnyegekhez: purple_temperature, yellow_temperature, pink_temperature és white_temperature.

Ebben a sorozatban ellenőrizzük, hogy a hőmérséklet kevesebb-e, mint 100. Ha igen, akkor emeld a TemperatureError kivételt. Mivel ez egy testre szabott kivétel, ami paramétert vár, ebben az esetben az emlékeztetőből leolvasott hőmérsékletet kell megadnod, hogy a kivétel megfelelően végrehajtsa a javító intézkedést. Például:

try: if purple_temperature < 100: raise TemperatureError(120) except TemperatureError as x: error = await x.eval() player.speak(error) else: player.speak( "Temperature is ok" )

Ismételd meg ezt minden vízmelegítőnél. Minden egyes X jelzésnél, miközben a melegítőkre nézel, hajtsd végre a sorozatot a megfelelő szőnyegszínekhez tartozó változó állandókat használva a szint teljesítéséhez.

Kódkönyv