在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中的 最后 阶段? 最后 对我来说非常重要,我喜欢它在这个给定场景中的工作方式,它使应用程序停止崩溃或暂停错误的窗口弹出窗口。
最好寻找适用于AS3和Haxe的原始解决方案。
答案 0 :(得分:4)
我认为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)表达式的值是值 PROT表达式如果完成;否则它没有说明 (也是无法到达的。)
以前已经讨论过将finally
关键字添加到Haxe:https://github.com/HaxeFoundation/haxe/issues/3335 - 但它看起来还有待进一步讨论。