Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
ich behandle einen ValueError und würde meine Fehlermeldung gerne abhängig von "need more than..." bzw. "too many values" formulieren. Das ValueError-Objekt liefert mir aber nur den Text. Gibt es keine andere Möglichkeit als sowas:
wenn Du den ValueError selber wirfst, kannst Du ihm natürlich mehr als ein Argument geben,
bzw. wie bei jedem Python-Objekt mit zusätzlichen Attributen bestücken.
Wenn die Methode die die Exception erzeugt aber vorgegeben ist, ist das schwierig.
Kannst Du mehr zum Hintergrund erzählen?
Die originale Fehlermeldung auf einen bestimmten Text zu untersuchen finde ich halt nicht wirklich gut. Da wäre mir ein errorcode zur Bestimmung lieber.
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )
Der String ist das einzige was du über den ValueError erfährst.
Im Übrigen ist split auch nicht geeignet um nichtvertrauenswürdige Inputdaten zu validieren.
Wenn du die Ausnahmen selber wirfst, dann kannst du von den Exceptions für jeden Fehlerfall ableiten. Dann musst du dich nicht mehr mit den Strings rumärgern. Wenn eine Bibliothek keine detailierten Fehler wirft, dann hast du Pech gehabt und musst damit leben, bzw. kannst versuchen die Fehlermeldung zu parsen. Da die Fehlermeldung nicht standardisiert sind, würde ich davon aber wohl die Finger lassen oder zumindest die Originalfehlermeldung mit ausgeben/loggen.
class RangeTooLargeError(ValueError):
pass
class RangeTooSmallError(ValueError):
pass
# ...
if length == 2:
begin, end = args
else:
raise RangeTooLargeError() if length > 2 else RangeTooSmallError()