Der Inhalt des Python-Tutorials (Kapitel 8) ist in einem Aufzählungszeichen zusammengefasst.
Vorheriger Artikel: Bulletin des Inhalts des Python-Tutorials (Kapitel 7) (im Aufbau)
Einführung
Grundlegende Prüfung zur Python3 Engineer-Zertifizierung Als Gegenmaßnahme ist dies ein persönliches Memo, das den Inhalt des Python-Tutorials (Buches) in leicht zu merkenden Bulletins zusammenfasst.
Referenzmaterial
Python-Tutorial: https://docs.python.org/ja/3/tutorial/
Kapitel 8: https://docs.python.org/ja/3/tutorial/errors.html
Bücher: https://www.oreilly.co.jp/books/9784873117539/
"Kapitel 8 Fehler und Ausnahmen"
--Python3 Engineer Certification Basic Exam Score
―― 4/40 Fragen (10,0%) ☆☆ ★★★ (Bedeutung: Mittel-)
--Thema
--Syntax-Fehler
- Ausnahmen (integrierte Ausnahmen und benutzerdefinierte Ausnahmen)
- Ausnahmebehandlung (versuchen Sie es, außer, sonst, endlich)
- Erklärung erheben
8.1 Syntaxfehler
- ** SyntaxError ** wird vor der Ausführung durch ** Parser ** erkannt.
- Der Parser verwendet einen kleinen Pfeil, um anzuzeigen, wo der Syntaxfehler zuerst gefunden wurde.
- Die Fehlerursache ist das Token vor dem Pfeil.
- Der Dateiname und die Zeilennummer werden ebenfalls angezeigt.
8.2 Ausnahme
- ** Ausnahme ** wird während der Ausführung erkannt. Es gibt die folgenden zwei Typen.
- ** Integrierte Ausnahmen ** ... Integrierte Ausnahmen von Python.
- ** Benutzerdefinierte Ausnahmen ** ... Benutzerdefinierte Ausnahmen.
- Es gibt verschiedene Arten von Ausnahmen, und die Arten werden in der Nachricht beschrieben.
- In der integrierten Ausnahme stimmen der Typ und der Name in der Nachricht immer überein.
--Matching ist für benutzerdefinierte Ausnahmen optional.
- Die meisten Ausnahmen werden vom Programm nicht behandelt und das Ergebnis wird in der Fehlermeldung angezeigt.
- Die erste Hälfte der Fehlermeldung zeigt den Kontext, in dem die Ausnahme aufgetreten ist, in Form eines Stack-Tracebacks.
- Zeigen Sie keine von der Standardeingabe gelesenen Zeilen an.
- Die letzte Zeile der Fehlermeldung beschreibt, was passiert ist.
- Details zum Ausnahmetyp und zur Ursache werden später in der Zeile angegeben.
8.3 Ausnahmen behandeln
-Die ** try-Anweisung ** ermöglicht es Ihnen, die ausgewählte Ausnahme zu behandeln.
Die try-Anweisung besteht aus folgenden Elementen. Die try- und without-Klauseln sind erforderlich, und die else- und finally-Klauseln können weggelassen werden.
- ** try-Klausel **
Block unter try :. Schreiben Sie oben in die try-Anweisung.
Schreiben Sie einen Prozess, der eine Ausnahme auslösen kann.
- ** außer Klausel **
außer [Ausnahmename] [als Variablenname]: Block unter. Schreiben Sie unter die try-Klausel.
Schreiben Sie die Verarbeitung, wenn eine Ausnahme ausgelöst wird.
- Es ist auch möglich, mehrere Ausnahmen zu schreiben.
- Wenn Sie den Ausnahmenamen weglassen, können Sie alle Ausnahmen abfangen.
--as Wenn ein Variablenname angegeben wird, wird der Variablen eine Ausnahmeinstanz zugewiesen.
--Argumente werden im Attribut ** args ** gespeichert.
- Da die Methode ** \ _ \ _ str () \ _ \ _ ** in der Ausnahmeinstanz definiert ist, kann sie direkt durch Drucken (Instanzname) angezeigt werden, ohne auf das Attribut args zu verweisen.
- Durch Auflisten von Ausnahmen in einem Taple ist es möglich, mehrere Ausnahmen in einer Ausnahmeklausel abzufangen.
- ** else-Klausel **
Block unter else :. Schreiben Sie unter die Ausnahmeklausel.
Schreiben Sie die Verarbeitung, wenn in der try-Klausel keine Ausnahme ausgelöst wird.
- ** finally-Klausel **
Der Block unter finally :. Schreiben Sie am Ende der try-Anweisung.
[Bereinigungsprozess] am Ende der try-Anweisung (https://qiita.com/Wakii/items/4ffcba348e31e7e141fc#86-%E3%82%AF%E3%83%AA%E3%83%BC%E3 % 83% B3% E3% 82% A2% E3% 83% 83% E3% 83% 97% E5% 8B% 95% E4% BD% 9C% E3% 81% AE% E5% AE% 9A% E7% BE Schreiben Sie% A9).
- Die Ausführungsreihenfolge der try-Anweisungen lautet wie folgt.
- Die try-Klausel wird zuerst ausgeführt.
- Wenn in der try-Klausel keine Ausnahme ausgelöst wird, wird die Except-Klausel übersprungen.
--Wenn es eine else-Klausel gibt, führen Sie sie aus.
- Wenn in der try-Klausel eine Ausnahme ausgelöst wird, werden der Rest der try-Klausel und die else-Klausel übersprungen.
- Wenn es eine Ausnahmeklausel gibt, die mit der Ausnahme übereinstimmt, führen Sie sie aus.
--Wenn es keine Ausnahmeklausel gibt, die mit der Ausnahme übereinstimmt, werfen Sie die Ausnahme gegebenenfalls erneut in die übergeordnete try-Anweisung.
- Wenn eine finally-Klausel vorhanden ist, wird diese vor dem erneuten Senden ausgeführt.
- Wenn keine obere try-Anweisung vorhanden ist, wird die Meldung ** nicht behandelte Ausnahme ** angezeigt und die Verarbeitung beendet.
- Ausnahmen, die in Funktionen auftreten, die direkt oder indirekt von der try-Klausel aufgerufen werden, werden auch in der Except-Klausel verarbeitet.
--Wenn es eine finally-Klausel gibt, führen Sie sie unabhängig davon aus, ob eine Ausnahme ausgelöst wird oder nicht, und beenden Sie die try-Anweisung.
8.4 Eine Ausnahme auslösen
-Sie können auch die Anweisung ** raise ** verwenden, um eine im Programm angegebene Ausnahme zwangsweise auszulösen.
--Schreiben Sie in Form von Raise [Ausnahme].
- Die angegebene Ausnahme kann eine Ausnahmeklasse oder eine Ausnahmeinstanz sein.
- Wenn Sie nur eine Erhöhung schreiben, ohne ein Argument in der Ausnahmeklausel anzugeben, wird die abgefangene Ausnahme erneut ausgelöst.
8.5 Benutzerdefinierte Ausnahmen
- Sie können auch eigene Ausnahmeklassen erstellen und verarbeiten.
- Die Ausnahmeklasse sollte normalerweise eine Klasse sein, die von der Ausnahmeklasse ** abgeleitet ist.
- Der Name der Ausnahmeklasse sollte "~ Fehler" lauten, genau wie bei Standardausnahmen.
- Wie bei einer normalen Klasse können Sie Methoden in einer Ausnahmeklasse überschreiben, aber normalerweise machen Sie keine zu komplizierten Dinge.
- Wenn Sie ein Modul schreiben, das verschiedene Fehler auslöst, ist es üblich, zuerst die Basisklasse für Ausnahmen zu definieren und einzelne Fehler als ihre Unterklassen zu behandeln.
8.6 Definition des Bereinigungsverhaltens
- Die Bereinigungsverarbeitung ist schließlich Klausel (-> [8.3 Ausnahmebehandlung](https://qiita.com/Wakii/items/4ffcba348e31e7e141fc#83-%E4%BE%8B%E5%A4%96%E3%81% Es ist definiert durch AE% E5% 87% A6% E7% 90% 86)).
- Wird für die Verarbeitung verwendet, die Sie unabhängig vom Vorhandensein oder Fehlen von Ausnahmen ausführen möchten, z. B. für die Freigabe externer Ressourcen.
--Wenn die Ausnahmeklausel eine nicht unterstützte Ausnahme enthält, führen Sie die Verarbeitung in der finally-Klausel aus und senden Sie sie erneut.
- Die finally-Klausel wird auch ausgeführt, wenn andere Klauseln in der try-Anweisung mit break, continue, retuen usw. beendet werden.
8.6.1 Für ein Objekt definiertes Bereinigungsverhalten
- Einige Objekte haben einen definierten Bereinigungsprozess, wenn sie nicht mehr benötigt werden.
- Wenn Sie ** mit Anweisung ** verwenden, um ein Objekt zu verarbeiten, bereinigt Python es sofort nach der Verwendung ordnungsgemäß.
Nächster Artikel: Der Inhalt des Python-Tutorials (Kapitel 9) ist in einem Aufzählungszeichen (im Aufbau) zusammengefasst.