User: your application exited with an error message Developer: What was the message? User: Need nonnegative i Developer: Well, don't pass in a negative i then!
:) -Steve ----- Original Message ---- > From: Lars Tandle Kyllingstad <[email protected]> > To: Discuss the phobos library for D <[email protected]> > Sent: Thu, July 1, 2010 10:15:36 AM > Subject: Re: [phobos] enforce() improvement > > The library user would still get the information, > because Throwable.toString() would still give the file and line number, and > like I said, Throwable.file and Throwable.line are supposed to be filled > with that information. My point was that enforce() puts the information > in Throwable.msg, which I find completely redundant. Also, if you are > using plain enforce() for error checking (like Phobos does in a lot of > places), Throwable.msg is your only source of information to pass to the > user, since enforce() by default throws an Exception and not an > InsightfulInformationException. -Lars On Thu, 2010-07-01 > at 07:00 -0700, Steve Schveighoffer wrote: > I disagree. The "user" > in this case, is the user of the library code. He does in fact need to > know the file/line that caused the problem, and more useful would be the full > stack trace so he can see where his code used the offending value. > > > If you are relying on enforce to give insightful error messages to an > actual user (that is, someone who runs your program), then you need some > training in user interface design :) > > -Steve > > > > > ----- Original Message ---- > > From: Lars Tandle > Kyllingstad < > href="mailto:[email protected]">[email protected]> > > To: > Phobos mailing list < > href="mailto:[email protected]">[email protected]> > > > Sent: Thu, July 1, 2010 9:50:15 AM > > Subject: [phobos] enforce() > improvement > > > > Often, at least in small programs, when > an exception is thrown you just > want > > to present a sensible > message to the user and abort the > > current > operation. > Example: > > void > > > doStuff(int i) { enforce(i >= 0, "Need nonnegative i"); } > > > > > try > doStuff(-1); > catch > > (Exception > e) writeln("Error: ", e.msg); > > In this case, the user will > > > see > > Error: b.d(5): > Need nonnegative > > i > > My point is that the user > doesn't need to see the file and line > > number > that caused > the error. This is only useful for the > > programmer. So > I > suggest we make either of the following changes to > > > enforce(): > > 1. Drop the file and line number > from the > > message. The Throwable > > class has dedicated > > 'file' and 'line' fields which we > can > populate > > with that > information without polluting the error > > > > message. > 2. Another option is to > include the file and line > > only in debug > > builds. > > -Lars > > > > > > _______________________________________________ > phobos mailing > > > list > > > href="mailto: > ymailto="mailto:[email protected]" > href="mailto:[email protected]">[email protected]"> > ymailto="mailto:[email protected]" > href="mailto:[email protected]">[email protected] > > http://lists.puremagic.com/mailman/listinfo/phobos > > > > > > _______________________________________________ > phobos mailing > list > > href="mailto:[email protected]">[email protected] > > href="http://lists.puremagic.com/mailman/listinfo/phobos" target=_blank > >http://lists.puremagic.com/mailman/listinfo/phobos _______________________________________________ phobos > mailing list > href="mailto:[email protected]">[email protected] > href="http://lists.puremagic.com/mailman/listinfo/phobos" target=_blank > >http://lists.puremagic.com/mailman/listinfo/phobos _______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
