Bug 14725 – std.getopt: improve error message for malformed arguments

Status
ASSIGNED
Severity
enhancement
Priority
P4
Component
phobos
Product
D
Version
D2
Platform
x86_64
OS
Linux
Creation time
2015-06-23T16:33:35Z
Last change time
2024-12-01T16:24:42Z
Assigned to
No Owner
Creator
Alex Parrill
Moved to GitHub: phobos#9662 →

Comments

Comment #0 by initrd.gz — 2015-06-23T16:33:35Z
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.
Comment #1 by rburners — 2015-07-15T09:15:27Z
I will work on that
Comment #2 by rburners — 2015-07-15T13:19:35Z
Comment #3 by robert.schadek — 2024-12-01T16:24:42Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/phobos/issues/9662 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB