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 .
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) ...