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

问题描述 投票:3回答:1

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

haxe
1个回答
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)表达式的值是PROTEIN表达式的值,如果它完成;否则它是未指定的(也是无法访问的)。

实际上,之前已经讨论过将finally关键字添加到Haxe:https://github.com/HaxeFoundation/haxe/issues/3335 - 但它看起来还有待进一步讨论。

© www.soinside.com 2019 - 2024. All rights reserved.