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 <[email protected]> > > To: Phobos mailing list <[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:[email protected]">[email protected] > http://lists.puremagic.com/mailman/listinfo/phobos > > > > _______________________________________________ > phobos mailing list > [email protected] > http://lists.puremagic.com/mailman/listinfo/phobos _______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
