Abfangen der ArgumentTypeError-Ausnahme von der benutzerdefinierten Aktion

8

Was ist die beste Vorgehensweise, um eine ArgumentTypeError-Ausnahme aus meiner eigenen benutzerdefinierten Aktion zu werfen und die Argaparse für mich zu fangen?

Es scheint, dass argarses try / except-Block diese Ausnahme für meine benutzerdefinierten Aktionen nicht behandelt. Obwohl es das für seine eingebauten Aktionen gut macht.

%Vor%

und

%Vor%

Zum Beispiel im obigen Code Wenn ich doppelte IPs hätte, würde die Ausnahme auf die Funktion main fallen und den hässlichen Stack-Trace ausgeben. Ich will das nicht, und ich möchte auch keinen Versuch / Ausnahme Block in main .

    
Hans Solo 27.03.2012, 00:52
quelle

1 Antwort

9

Nachdem ich den Quellcode von argparse gesehen habe, habe ich herausgefunden, dass er ArgumentTypeError in die ArgumentError-Ausnahme übersetzt.

Also statt:

%Vor%

Ich sollte haben:

%Vor%

Und argparse würde immer noch den Rest für mich tun (Ausnahme abfangen und Verwendungsbenachrichtigung ausgeben) ...

    
Hans Solo 27.03.2012, 00:57
quelle

Tags und Links