Uit de cursus: Training over basisprincipes van Python

Aangepaste uitzonderingen

- [Instructeur] Oké, dit is een makkelijke. In feite weet je al hoe je dit moet doen, klasse CustomException breidt Exception:pass uit. Oké, we hebben een aangepaste uitzondering geschreven. Volgende les. Ik maak maar een grapje. Er zijn nog een paar dingen die we moeten behandelen. Dus hier gebruiken we de pass-instructie omdat we letterlijk niets hoeven te definiëren voor onze nieuwe CustomException-klasse. Het erft de constructor van de Exception-klasse die het uitbreidt. De belangrijkste informatie zit in de naam, CustomException. En vaak is dit alle informatie die u moet weten om uw app te debuggen of de gebruiker te laten weten wat hij verkeerd doet. We kunnen een functie schrijven die deze nieuwe CustomException verhoogt, def causeError:raise CustomException en laten we dan deze functie aanroepen. Dus we kunnen onze CustomException-foutklasse in de naam zien, dan is er deze dubbele punt en daarna is het merkwaardig leeg. Dus laten we een aangepast bericht doorgeven aan onze nieuwe klas. U hebt de functie causeError aangeroepen en u ziet nu dat het bericht wordt afgedrukt. Aangepaste uitzonderingen zijn meestal lichtgewicht klassen met heel weinig speciale attributen en methoden en dergelijke, maar u kunt enkele attributen hebben die nuttig zijn voor het organiseren en presenteren van informatie aan de gebruiker over de fout. Als u bijvoorbeeld een webserver schrijft en HTTP-uitzonderingen op verschillende punten in de code moet instellen, hebt u mogelijk een HttpException-klasse en verschillende specifieke HttpException-klassen die deze uitbreiden. Laten we dus een HTTP-uitzondering schrijven met een statische statuscode en een berichtkenmerk en vervolgens wat informatie over het opmaken van de tekenreeks die wordt doorgegeven aan de bovenliggende uitzondering. Dus hier is onze HttpException. Het gaat Exception verlengen. We gaan het een statuscode geven. Laten we dat voorlopig Geen maken, dus dat is die speciale Geen waarde, en een boodschap. We maken er ook Geen van. En dan gaan we de bovenliggende constructor overschrijven, dus we moeten onze eigen constructor definiëren, de bovenliggende constructor aanroepen. En als we dan die bovenliggende constructor aanroepen, geven we het statuscodebericht door, is statusCode en het bericht is self.message, sorry, en dat moet self.statusCode zijn. Oké. Laten we nu een paar onderliggende klassen schrijven die de HttpException, NotFound HttpException uitbreiden. En het enige wat we hier hoeven te doen is onze statuscode definiëren, die 404 zal zijn, en ons bericht dat Resource niet gevonden zal zijn. Oké, laten we nu een ServerError-klasse schrijven, klasse ServerError breidt HttpException statusCode 500 uit en bericht Deze server heeft het verprutst! Groot. Laten we nu een functie schrijven die zegt verhoogt een ServerError, raiseServerError verhoogt ServerError, en laten we het dan aanroepen. Groot. En nu kunt u zien dat dit uitzonderingsbericht wordt geformatteerd met onze statuscode en bericht omdat het deze HttpException uitbreidt. Het schrijven van aangepaste uitzonderingsklassen is een geweldige manier om uw code schoon en georganiseerd te houden. Deze klassen fungeren als documentatie voor alle problemen die zich kunnen voordoen, wat ze kunnen veroorzaken, wat de oplossingen zijn, en ze scheiden ook veelvoorkomende verwachte fouten van iets dat misschien heel erg is en dat de aandacht van de ontwikkelaar vereist.

Inhoud