[ 
https://issues.apache.org/jira/browse/MATH-361?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12882589#action_12882589
 ] 

Gilles commented on MATH-361:
-----------------------------

{quote}
What I don't agree with is the fact error messages are for the set of users 
that must read the javadoc. Error messages are for end users, some of them not 
even knowing commons-math is used in an application they use. They don't read 
the javadoc, they don't develop the application.
But when a statistician tries to set up a gamma distribution and get a message 
about alpha being negative, he will better understand what his input error was 
than if a generic "negative parameter" message was displayed.
{quote}

At best, there is lot of confusion (about exception usage) in these statements. 
I guess that part of it stems from the fact that you are CM-developer, CM-user, 
CM-service provider, CM-based application developer, CM-based application user, 
...

First, the error messages are indeed for the user of CM, that is the 
_programmer_ that uses the low-level CM library to build a high-level 
application. If he lets the CM exception propagates upwards to _his_ users, 
that is sloppy design.
To be more precise, in the "statistician" example, what do you mean by "tries 
to set up a gamma distribution"? The answer is:

* either he is coding something himself (thus he _is_ the application 
programmer, and must read the Javadoc, etc.)
* or he is using a software that will call CM methods. The programmer of that 
software must have read the Javadoc (where it is indicated that "alpha" must be 
positive) and if he called "setAlpha" with a negative argument anyways, that is 
a _bug_ in his program.

The Java language designers provided several mechanisms for exception handling 
but not always clearly promoted tried and true best practices. Fortunately some 
people did. Do you have access to a copy of Joshua Bloch's _"Effective Java"_? 
I found that the section on "Exception" is enlightening; especially, "items" 
40, 41, 43, 45 address all we have been arguing about.

The bottom line is:
{quote}
[...] don't consider messages are for developers using directly commons math.
{quote}
The vast majority (of those triggered by precondition violations) should be for 
them.
{quote}
[...] but some messages will go through all these layers and be finally 
displayed to users.
{quote}
They shouldn't.
{quote}
These messages should provide as much information to them as we can provide.
{quote}
No, the "detail" message is a hint to get at the code and correct the bug.
{quote}
Users are the most important part of a system.
{quote}
Most important for CM are the users who use CM _directly_. Apart from doing 
correct computations (obviously), the library should be as easy as possible to 
use, while providing a robust and clear design that can stand as an example of 
best programming practices and enhance development. That may come at odds with 
short-term demands of some top-level (indirect) users. [Like those who require 
to see error messages in French!]

The huge amount of error messages may be welcome in a high-level application, a 
sort of "mat(hematical) lab(oratory)" powered by CM, but not in CM itself.


> Localization and Error Handling
> -------------------------------
>
>                 Key: MATH-361
>                 URL: https://issues.apache.org/jira/browse/MATH-361
>             Project: Commons Math
>          Issue Type: Improvement
>    Affects Versions: 2.1
>            Reporter: Gilles
>            Priority: Minor
>         Attachments: l10n.tar.gz, res.tar.gz
>
>
> This proposal aims at easing the handling of error during algorithms 
> development, and also enhancing the flexibility of the error reporting 
> (provide meaningful exception classes and run-time selection of the 
> localization formatting).
> More details at 
> [http://www.mail-archive.com/d...@commons.apache.org/msg14570.html]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to