[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