[Bug 18877] [XQ30] try/catch

https://www.w3.org/Bugs/Public/show_bug.cgi?id=18877

--- Comment #17 from Michael Dyck <jmdyck@ibiblio.org> ---
In addition, note that other sentences in the same section have the same bug as
raised in comment #0...

"If a function call occurs within a try clause, errors raised by evaluating
the corresponding function are caught by the try/catch expression."

But consider:
    declare function local:f() { 1 div 0 };
    try { function() { local:f() } }
    catch * { 42 }
The function call local:f() occurs with the try clause, and so the spec
indicates that the error it raises is caught by the try/catch expr.
However, it shouldn't be, because the eval of that function call is not
caused by the eval of the target expression.

----

"If a variable reference is used in a try clause, errors raised by binding
a value to the variable are not caught unless the binding expression occurs
within the try clause."

But consider:
    try { function() { let $x := 1 div 0 return $x } }
    catch * { 42 }
The binding expression "1 div 0" occurs within the try clause, and so the
spec (maybe) says that the dynamic error raised by evaluating that expression
is caught by the try/catch expr. However, it shouldn't be.

(Actually, this dynamic error isn't raised by "binding a value to the
variable", but by attempting to come up with a value in the first place.
But you get the idea.)

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Wednesday, 5 June 2013 06:37:07 UTC