在AS3中,我可以尝试/ catch / finally一个JSON文件,如下所示:
try{
myJSON = JSON.parse(_fileReference.data.toString());
}
catch (e:TypeError){ //String?
_se.log.trace(e); //Never got called
}
finally{
if (null == myJSON){
_se.log.trace("SyntaxError: Error #1132: Invalid JSON parse input.");
return;
}
}
有没有办法重现Haxe的Last阶段?最后对我来说非常重要,我喜欢它在这个给定场景中的工作方式,它阻止了应用程序崩溃或暂停错误的窗口弹出窗口。
最好寻找适用于AS3和Haxe的原始解决方案。
有scopes
haxelib,我认为它提供与try/catch/finally
类似的功能与范围保护和受保护的块。见:https://bitbucket.org/parensoft/scopes
从自述文件中的原始保护/清除表达式示例:
import scopes.Protect;
Protect.protect(PROT, CLEAN);
当PROT退出时,将始终执行CLEAN。这包括正常完成或带有异常的突然退出,或者返回,中断或继续声明。
任何从CLEAN表达式突然退出都会影响PROT表达式的先前突然退出(如果有的话)。
Protect.protect(PROT,CLEAN)表达式的值是PROTEIN表达式的值,如果它完成;否则它是未指定的(也是无法访问的)。
实际上,之前已经讨论过将finally
关键字添加到Haxe:https://github.com/HaxeFoundation/haxe/issues/3335 - 但它看起来还有待进一步讨论。