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

Reply via email to