@Hartmannsgruber: Wonach hast Du denn genau *die* Ausnahmen ausgewählt? Das ist ja nur ein kleiner Bruchteil der möglichen Ausnahmen die auftreten können und sind Spezialisierungen von allgemeineren Ausnahmen, es gibt da also ”Geschwister” die nicht behandelt werden. Zum Beispiel beim `ConnectionRefusedError` ist das ja allgemein ein `ConnectionError` und es könte auch ein `BrokenPipeError, `ConnectionAbortedError`, oder `ConnectionResetError` sein. Und beim `SMTPAuthenticationError` wären die nicht behandelten Geschwister `SMTPConnectError`, `SMTPDataError`, `SMTPHeloError`, und `SMTPSenderRefused`. Die alle ein `SMTPResponseException` sind, was wiederum von `SMTPException` abgeleitet ist.
Bei Ausnahmen die von irgendwoher standardisierte Fehlercodes und Texte von anderen Diensten bekommen, würde ich auch immer diese noch mindestens zusätzlich ausgeben. Also zum Beispiel beim `SMTPResponseException` und den abgeleiteten Klassen gibt es den SMTP-Fehlercode und die Textrückmeldung vom Server in der Ausnahme — das kann wichtig zur Fehlersuche sein.
Und alles was von `OSError` abstammt, also auch `ConnectionError` und `socket.gaierror`, hat eine Fehlernummer und eine Fehlermeldung dazu. Auch die würde ich nicht verschweigen, denn danach kann man prima im Netz suchen wenn es nicht funktioniert.
Irgendentwas mit SSL behandelst Du überhaupt nicht.
Hier mal der relevante Ausschnitt aus der Ausnahmehierarchie, mit den Ausnahmen markiert, die Du behandelst:
Code: Alles auswählen
builtins.OSError
builtins.ConnectionError
builtins.BrokenPipeError
builtins.ConnectionAbortedError
builtins.ConnectionRefusedError ***
builtins.ConnectionResetError
smtplib.SMTPException
smtplib.SMTPNotSupportedError
smtplib.SMTPRecipientsRefused
smtplib.SMTPResponseException
smtplib.SMTPAuthenticationError ***
smtplib.SMTPConnectError
smtplib.SMTPDataError
smtplib.SMTPHeloError
smtplib.SMTPSenderRefused
smtplib.SMTPServerDisconnected
socket.gaierror ***
socket.herror
socket.timeout
ssl.SSLError
ssl.SSLEOFError
ssl.SSLSyscallError
ssl.SSLWantReadError
ssl.SSLWantWriteError
ssl.SSLZeroReturnError