commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gilles Sadowski <>
Subject Re: [Math] Package for "UnivariateRealFunction"s
Date Fri, 29 Oct 2010 10:13:21 GMT
> [...]
> >
> >In the above, there is also a hidden request: I would like to remove the
> >checked "FunctionEvaluationException" from the interface. As mentioned
> >recently in a [VFS] thread, the only argument in favor of checked
> >exceptions
> >is in situations where the code really implements local retries.
> >What would
> >you retry here? [If the answer is "Another value for the parameter
> >x", that
> >would just mean that we should instead throw an "IllegalArgumentException"
> >for the x that lead to failure.]
> >This will hugely simplify user (and CM) code.
> >I will create a new (unchecked) "FunctionEvaluationException" in package
> >"exception" so that current users of the exception would just have to do a
> >global search and replace:
> >
> I'm -0 on having it unchecked.  But as long as it is documented in
> the javadocs, I don't have a problem.  Unlike {VFS}, it is more
> likely that [math] users want to catch and handle something like
> sqrt(-1).  I'd be -1 to removing the exception all together, since
> it is a major pain to try and figure out why you got a NaN value
> when debugging your code.

Indeed, which unchecked exception to throw is a question of policy (as
opposed to the compiler-enforced "throws" clause), to be documented.

Your example stresses the problem that "FunctionEvaluationException" is not
the best choice because -1 is an illegal argument for "sqrt". Hence, for
a "Sqrt" function object, the standard policy would mandate to throw a
subclass of "IllegalArgumentException", which conflicts with the _a-priori_
choice of a checked exception.

The suggested CM policy would thus be that implementations of
"UnivariateRealFunction" must throw an "IllegalNumberException" when the
argument is not valid for that function.

I proposed to create a new, unchecked, "FunctionEvaluationException" in
order to ease the transition of codes using CM but, in principle, I don't
see it as really useful. It could be, if CM wants to be really verbose:
Any CM code that calls a user-defined function can catch all
"RuntimeException"s that could arise from this unknown code and then wrap
it inside the new "FunctionEvaluationException" with some additional info.
[Note that this completely different from the assumed usage of the current
"FunctionEvaluationException": Force functions to throw it although CM never
handles it!]


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message