Yes, perfect. It's a net improvement. Thanks Lars!

Andrei

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 <[email protected]>
To: Discuss the phobos library for D <[email protected]>
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:[email protected]"; href="mailto:[email protected]";>[email protected]>
To: Phobos mailing list <
href="mailto:[email protected]";>[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:
ymailto="mailto:[email protected]"; href="mailto:[email protected]";>[email protected]"> ymailto="mailto:[email protected]"; href="mailto:[email protected]";>[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos
_______________________________________________
phobos mailing
list
href="mailto:[email protected]";>[email protected]
href="http://lists.puremagic.com/mailman/listinfo/phobos"; target=_blank
http://lists.puremagic.com/mailman/listinfo/phobos

_______________________________________________

phobos mailing list
href="mailto:[email protected]";>[email protected]
href="http://lists.puremagic.com/mailman/listinfo/phobos"; target=_blank
http://lists.puremagic.com/mailman/listinfo/phobos
_______________________________________________
phobos mailing list

href="mailto:[email protected]";>[email protected]

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


_______________________________________________
phobos
mailing list

href="mailto:[email protected]";>[email protected]

href="http://lists.puremagic.com/mailman/listinfo/phobos"; target=_blank
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