替代尝试,捕获,最后在Haxe

时间:2018-04-17 08:01:38

标签: haxe

在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的原始解决方案。

1 个答案:

答案 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 - 但它看起来还有待进一步讨论。