>
> Do you mean that the context info for a (hyptohetical) method like
>  doSomething(LinearOperator a, LinearOperator b)
> would be like
>  offending operator: a
> or
>  offending operator: b
> ?
>
> If so, is it not enough to just throw the exception? Won't it be obvious
> which operator is "offending" by looking at the line number in the stack
> trace?
>
In your example, the answer is definitely yes. And from this point of
view, using context is probably a very flexible solution, because we
would provide some context only where it would really be needed :
sometimes, a reference to the offending operator would certainly be
useless. Thus, in your example, if the exception is some sort of
DimensionMismatchException, I do not really need to know more than : a
(or b) has wrong dimensions. Fix is easy.

But I can think of other cases where the answer is probably no. For
example, let us consider the Unpreconditioned Conjugate Gradient
method. In this case, if a NonPositiveDefiniteLinearOperator is
thrown, there is no ambiguity as to which operator is the cause (there
is only one operator). However, the context would also hold a
reference to the offending vector x, which could be invaluable.
Let's assume I have proved mathematically that a (huge) linear
operator a is positive definite. I go on implementing it, and pass it
to the CG method, which throws a NonPositiveDefiniteLinearOperator.
This means that during the iterations, the solver has found this rare
counter-example x which proves that my implementation is faulty (x is
such that x'.a.x <= 0). Just knowing that my implementation has a bug
is already quite good. But retrieving a *reference* to the offending
vector x would allow me to reproduce the bug *outside* the iterations
of the CG solver.

In other words, having this kind of context with documented keys would
help the end-user debug his own code. I hope I'm making my point
clearly, there.

Best regards,
Sébastien

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

Reply via email to