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 <[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
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to