Exceptions/Catch an exception thrown in a nested call: Difference between revisions
Exceptions/Catch an exception thrown in a nested call (view source)
Revision as of 19:04, 1 May 2024
, 18 days ago→{{header|langur}}
Langurmonkey (talk | contribs) |
|||
(9 intermediate revisions by 6 users not shown) | |||
Line 23:
F baz(i)
I i == 0
X.throw U0()
E
X.throw U1()
F bar(i)
Line 220:
=={{header|Amazing Hopper}}==
<p>Hopper has a basic "try/catch" handling, and must be handled manually. Only one exception will be
<p>VERSION 1: </p>
<syntaxhighlight lang="
#include <jambo.h>
Line 237:
Subrutines
Define ' Foo '
Gosub ' Bar '
Line 269 ⟶ 266:
</pre>
<p>VERSION 2: </p>
<syntaxhighlight lang="
#include <jambo.h>
Line 1,176 ⟶ 1,173:
foo()
{
for(i := 0
{
try
Line 2,073 ⟶ 2,070:
There is no explicit try block. A catch implicitly wraps the instructions preceding it within a block into a try block.
<syntaxhighlight lang="langur">val .U0 = h{"msg": "U0"}
val .U1 = h{"msg": "U1"}
val .baz =
val .bar =
val .foo =
for .i in [0, 1] {
.bar(.i)
catch {
if _err
writeln "caught .U0 in .foo()"
} else {
Line 2,095 ⟶ 2,090:
}
.foo()
</syntaxhighlight>
{{out}}
Line 3,098 ⟶ 3,094:
=={{header|Sidef}}==
<syntaxhighlight lang="ruby">func baz(i) { die "U#{i}" }
func bar(i) { baz(i) }
func foo {
[0, 1].each { |i|
try { bar(i) }
catch { |
msg ~~ /^U0/
}
}
}
foo()
{{out}}
<pre>
Line 3,446 ⟶ 3,442:
We can use that approach here, re-throwing the second (uncaught) exception so that it terminates the script.
<syntaxhighlight lang="
var U1 = "U1"
|