[phobos] enforce() improvement

Steve Schveighoffer schveiguy at yahoo.com
Thu Jul 1 11:19:06 PDT 2010


I re-read this thread.  I understand now that you don't want to remove that information, just not print it via msg?  Sorry for the opposition.  I agree that the message shouldn't contain redundant info.

As long as the default handler prints the information out, I'm ok with that.  Having as much information as possible when something goes unexpectedly wrong is the best case scenario for a developer.

-Steve



----- Original Message ----
> From: Lars Tandle Kyllingstad <lars at kyllingen.net>
> To: Discuss the phobos library for D <phobos at puremagic.com>
> Sent: Thu, July 1, 2010 2:06:45 PM
> Subject: Re: [phobos] enforce() improvement
> 
> There is no need to add anything, Throwable already has this structure.
That 
> was the main point behind my proposal:  enforce() puts the
information 
> in the wrong place.

I'll look into it.

-Lars



On 
> Thu, 2010-07-01 at 10:47 -0700, Andrei Alexandrescu wrote:
> I think it 
> would be a good improvement to add such structure to 
> exceptions. So 
> toString() would continue to print essentially the same 
> message, but it 
> would assemble it from the separately-available 
> properties file, line, 
> and reason.
> 
> Go for it, or submit a ticket so it's not 
> forgotten.
> 
> Andrei
> 
> Lars Tandle Kyllingstad 
> wrote:
> > 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 <
> ymailto="mailto:lars at kyllingen.net" 
> href="mailto:lars at kyllingen.net">lars at kyllingen.net>
> >>> 
> To: Phobos mailing list <
> href="mailto:phobos at puremagic.com">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:
> ymailto="mailto:phobos at puremagic.com" 
> href="mailto:phobos at puremagic.com">phobos at puremagic.com">
> ymailto="mailto:phobos at puremagic.com" 
> href="mailto:phobos at puremagic.com">phobos at puremagic.com
> >> 
> http://lists.puremagic.com/mailman/listinfo/phobos
> >>
> 
> >>
> >>      
> >> 
> _______________________________________________
> >> phobos mailing 
> list
> >> 
> href="mailto:phobos at puremagic.com">phobos at puremagic.com
> >> 
> href="http://lists.puremagic.com/mailman/listinfo/phobos" target=_blank 
> >http://lists.puremagic.com/mailman/listinfo/phobos
> > 
> 
> > 
> > _______________________________________________
> > 
> phobos mailing list
> > 
> href="mailto:phobos at puremagic.com">phobos at puremagic.com
> > 
> href="http://lists.puremagic.com/mailman/listinfo/phobos" target=_blank 
> >http://lists.puremagic.com/mailman/listinfo/phobos
> 
> _______________________________________________
> phobos mailing 
> list
> 
> href="mailto:phobos at puremagic.com">phobos at puremagic.com
> 
> href="http://lists.puremagic.com/mailman/listinfo/phobos" target=_blank 
> >http://lists.puremagic.com/mailman/listinfo/phobos


_______________________________________________
phobos 
> mailing list

> href="mailto:phobos at puremagic.com">phobos at puremagic.com

> href="http://lists.puremagic.com/mailman/listinfo/phobos" target=_blank 
> >http://lists.puremagic.com/mailman/listinfo/phobos


      


More information about the phobos mailing list