Hi.

> Added section on Exceptions.

I agree with the explanations; however I think that we should add a paragraph
(see below).

> Modified:
>     commons/proper/math/trunk/src/site/xdoc/developers.xml
> 
> Modified: commons/proper/math/trunk/src/site/xdoc/developers.xml
> URL: 
> http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/xdoc/developers.xml?rev=1065874&r1=1065873&r2=1065874&view=diff
> ==============================================================================
> --- commons/proper/math/trunk/src/site/xdoc/developers.xml (original)
> +++ commons/proper/math/trunk/src/site/xdoc/developers.xml Tue Feb  1 
> 00:23:48 2011
> @@ -183,6 +183,50 @@
>        Guide.</li>
>      </ul>
>     </subsection>
> +   <subsection name='Exceptions'>
> +    <ul>
> +      <li>
> +      Exceptions generated by Commons Math are all unchecked.</li>
> +      <li>
> +      All public methods advertise all exceptions that they can generate.
> +      Exceptions <i>must</i> be documented in both javadoc and method 
> signatures
> +      and the documentation in the javadoc <i>must</i> include full 
> description
> +      of the conditions under which exceptions are thrown.</li>
> +      <li>
> +      All exceptions inherit from the base class, MathRuntimeException.</li>
> +      <li>
> +      Methods <i>should</i> fully specify parameter preconditions required 
> for
> +      successful activation.  When preconditions are violated, a
> +      MathIllegalArgumentException should be thrown.  Subclasses of
> +      MathIllegalArgumentException may be used to represent common parameter
> +      contract violations (for example, NoBracketingException).  Exception
> +      messages <i>must</i> contain sufficient information on parameter 
> values to
> +      determine the exact precondition failure.</li>
> +      <li>
> +      Exceptions generated by Commons Math make sense without knowing
> +      implementation details other than those stated in the public API.
> +      For example, a NoBracketingException makes sense thrown by a solver 
> that
> +      has a precondition requiring that initial points bracket a root. This
> +      exception does not make sense, however, thrown by an inverse cumulative
> +      probability estimator.</li>
> +      <li>
> +      MathIllegalArgumentException should only be thrown in situations
> +      where preconditions can be exhaustively provided so that what arguments
> +      are "illegal" can be specified fully to the caller. Domain-specific
> +      exceptions need to be defined for cases where failures cannot be
> +      attributed to parameter precondition violation. For example, the exact
> +      domain of successful activation of a solver or quadrature method may be
> +      impossible to specify because of numerical properties of the method.
> +      If a solver fails to find a root or a quadrature method fails to 
> converge
> +      for a given set of parameters, <i>unless those parameters violate the
> +      advertised preconditions</i> it is not appropriate to throw 
> +      MathIllegalArgumentException.</li>

  If the failure results from an exception thrown by user code (e.g. an
  exception is thrown while a solver is evaluating a user-defined function),
  the Commons Math code must let it propagate without interference.

> +      <li>
> +      State information included in exception messages <i>must</i> be 
> available
> +      in exception properties - i.e., successful handling or reporting of 
> +      Commons Math exceptions must not require parsing exception 
> messages.</li>
> +     </ul>
> +   </subsection>


Gilles

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to