[phobos] enforce() improvement

Lars Tandle Kyllingstad lars at kyllingen.net
Thu Jul 1 11:22:15 PDT 2010


Oh, I see.  Well, ignore my last message then -- I sent it before I read
this one. :)

-Lars



On Thu, 2010-07-01 at 11:19 -0700, Steve Schveighoffer wrote:
> 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
> 
> 
>       
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos




More information about the phobos mailing list