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.
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.
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.
Mit Blick auf die Boto3-Quelle wird Boto3Error als Basis aller Boto-Fehler deklariert. Also, Sie können das wahrscheinlich tun:
%Vor%