[phobos] enforce() improvement
Lars Tandle Kyllingstad
lars at kyllingen.net
Thu Jul 1 11:06:45 PDT 2010
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 <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
> >
> >
> > _______________________________________________
> > phobos mailing list
> > 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