[phobos] enforce() improvement
Lars Tandle Kyllingstad
lars at kyllingen.net
Thu Jul 1 07:15:36 PDT 2010
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 <lars at kyllingen.net>
> > To: Phobos mailing list <phobos at puremagic.com>
> > 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:phobos at puremagic.com">phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
>
>
>
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
More information about the phobos
mailing list