<blocksapp="Snap! 5.1, http://snap.berkeley.edu"version="1"><block-definitions="safely try %'action' then if %'error' %'handler'"type="command"category="control"><header></header><code></code><translations>pt:tenta executar _ e, em caso de erro _ , executa _
</translations><inputs><inputtype="%cs"></input><inputtype="%upvar"></input><inputtype="%cs"></input></inputs><script><custom-blocks="let %upvar be %s"><l>reset</l><blocks="evaluate"><blocks="reportJSFunction"><list><l>proc</l></list><l>var oldHandleError = proc.handleError,
 oldCatchingErrors = proc.isCatchingErrors;

return function(){
 proc.handleError = oldHandleError;
 proc.isCatchingErrors = oldCatchingErrors;
}</l></block><list></list></block></custom-block><blocks="doCallCC"><blocks="reifyScript"><script><blocks="doRun"><blocks="reportJSFunction"><list><l>reset</l><l>action</l><l>handler</l><l>proc</l></list><l>proc.isCatchingErrors = true;
proc.handleError = function(error, element){
 reset();
 proc.context = handler;
 proc.context.variables.setVar("error", error);
}

try{
 proc.evaluate(action, new List(), true);
}
catch(e){
 proc.handleError(e, null);
} </l></block><list><blockvar="reset"/><blockvar="action"/><blocks="reifyScript"><script><blocks="doRun"><blocks="reifyScript"><script><blocks="doRun"><blockvar="handler"/><list></list></block><blocks="doRun"><blockvar="return"/><list></list></block></script><list></list></block><list></list></block></script><list></list></block></list></block></script><list><l>return</l></list></block></block><blocks="doRun"><blockvar="reset"/><list></list></block></script></block-definition><block-definitions="error %'msg'"type="command"category="control"><header></header><code></code><translations>pt:lança o erro _
</translations><inputs><inputtype="%txt"></input></inputs><script><blocks="doRun"><blocks="reportJSFunction"><list><l>msg</l></list><l>throw new Error(msg);</l></block><list><blockvar="msg"/></list></block></script></block-definition><block-definitions="let %'var' be %'val'"type="command"category="other"><header></header><code></code><translations>pt:cria a variável de guião _ com valor _
</translations><inputs><inputtype="%upvar"></input><inputtype="%s"></input></inputs><script><blocks="doSetVar"><l>var</l><blockvar="val"/></block></script></block-definition><block-definitions="safely try reporting %'this' then if %'error' report %'that'"type="reporter"category="control"><header></header><code></code><translations></translations><inputs><inputtype="%anyUE"></input><inputtype="%upvar"></input><inputtype="%anyUE"></input></inputs><script><blocks="doDeclareVariables"><list><l>value</l></list></block><custom-blocks="safely try %cs then if %upvar %cs"><script><blocks="doSetVar"><l>value</l><blocks="evaluate"><blockvar="this"/><list></list></block></block></script><l>err</l><script><blocks="doSetVar"><l>error</l><blockvar="err"/></block><blocks="doSetVar"><l>value</l><blocks="evaluate"><blockvar="that"/><list></list></block></block></script></custom-block><blocks="doReport"><blockvar="value"/></block></script></block-definition></blocks>