It looks like the only difference is that catch blocks precede try blocks and aren't indented to show how they nest. One could mechanically convert
handle err {
cleanup1()
return 42, nil
}
handle err {
cleanup2()
}
check dostuff()
into try {
try {
dostuff();
} catch (Exception e) {
cleanup2();
throw e;
}
} catch (Exception e) {
cleanup1();
return 42;
}