-
-
Notifications
You must be signed in to change notification settings - Fork 747
Closed
Labels
Description
initrd.gz (@ColonelThirtyTwo) reported this on 2015-06-23T16:33:35Z
Transfered from https://issues.dlang.org/show_bug.cgi?id=14725
CC List
- rburners
Description
When parsing an argument that isn't a string (ex. an int), getopt just uses `std.conv.to`, which throws a ConvException that's not very helpful to the end user.
For example:
import std.stdio;
import std.getopt;
import std.conv;
void main(string[] args) {
int num;
GetoptResult helpinfo;
try {
helpinfo = getopt(args,
"num", "An integer", &num,
);
} catch(ConvException ex) {
stderr.writeln("Error parsing arguments: ", ex.msg);
return;
}
if(helpinfo.helpWanted) {
defaultGetoptPrinter("I am help text", helpinfo.options);
}
}
$ rdmd ~/test.d --num=foo
Error parsing arguments: Unexpected 'o' when converting from type string to type int
It would be nicer if getopt caught the ConvException, then threw a GetOptException with a more end-user-friendly message. For example:
$ rdmd ~/test.d --num=foo
Error parsing arguments: `num` was passed a non-integer value.