Wie kann ich eine Boto-Ausnahme in Python behandeln?

7

Wie kann ich einen boto.storage_uri() -Aufruf in Python schreiben, damit ich mögliche Ausnahmen behandeln kann?

    
topless 17.11.2011, 23:45
quelle

4 Antworten

2

Die erste Frage ist, welche Ausnahmen dieser Aufruf wahrscheinlich generiert? Sie möchten keinen Pauschalausnahmebehandler in einer beliebigen Sprache erstellen. Sie sollten zuerst die Boto-Dokumentation lesen, um zu sehen, ob sie die Ausnahmen dokumentiert, die Sie möglicherweise von einer Website sehen Anruf gegeben, aber wenn nicht, würde ich zuerst versuchen:

%Vor%

Oder protokollieren Sie die Ausnahme (mit der Protokollierung Paket exception -Methode), aber so oder so Notieren Sie sich, welche Arten von Ausnahmen Sie während des Tests sehen und ob Sie diese speziell behandeln sollten. Sie können auch den Python-Tutorial-Abschnitt zu Ausnahmen und Fehlern lesen.

    
Nick Bastin 17.11.2011, 23:51
quelle
29

Deine Frage zu Boto ist eine gute, nicht einfach zu beantworten. Die Boto-Ausnahmehierarchie ist schlecht entworfen, und die einzige Möglichkeit, zu ermitteln, welche Exception Sie auffangen möchten, ist der Boto-Quellcode.

Wenn Sie beispielsweise (unter Ubuntu) /usr/share/pyshared/boto/exception.py schauen, werden Sie feststellen, dass es zwei breite Klassen gibt:    boto.exception.BotoClientError    boto.exception.BotoServerError

Viele der Ausnahmen sind von diesen beiden abgeleitet, obwohl das Konzept von "Client" und "Server" nicht sehr gut definiert ist und Sie wahrscheinlich beide prüfen möchten, um sicherzustellen, dass viele Ausnahmen unerwartet auftreten können (wie üblich) ). Ausnahmen wie boto.exception.NoAuthHandlerFound werden jedoch direkt von Exception abgeleitet und müssen daher separat überprüft werden.

Leider sieht es beim Betrachten des Codes so aus, als ob es weder Konsistenz noch große Sorgfalt bei der Definition der Ausnahmehierarchie in Boto gibt, was ein Fehler in Botos Entwurf ist, der leider eine breitere Ausnahmeprüfung erfordert als normalerweise empfohlen.

    
GaryWiz 21.08.2012 23:47
quelle
0

Das sollte funktionieren:

%Vor%

Wenn Sie alle Ausnahmen behandeln möchten (ich würde es nicht empfehlen):

%Vor%

Lesen Sie die Dokumentation zu Ausnahmen und Fehlern für detaillierte Informationen.

    
Blender 17.11.2011 23:47
quelle
0

Mit Blick auf die Boto3-Quelle wird Boto3Error als Basis aller Boto-Fehler deklariert. Also, Sie können das wahrscheinlich tun:

%Vor%     
Jeremy Brooks 24.02.2017 01:59
quelle

Tags und Links