我可以在不抛出异常的情况下破解JS中的try - catch吗?

时间:2015-08-13 12:45:56

标签: javascript operators try-catch

如果条件适用,我想在try块中默默地破解catch - try。 (不抛出不必要的例外)

foo = function(){

    var bar = Math.random() > .5;

    try{

          if( bar ) // Break this try, even though there is no exception here.

          //  This code should not execute if !!bar 

          alert( bar );

    }
    catch( e ){}

    // Code that executes if !!bar

    alert( true );

}

foo();

但是,return不是一个选项,因为该函数应该在之后继续执行。

更新

我仍然希望继续使用finally块。

3 个答案:

答案 0 :(得分:4)

您可以使用 break 标签 语法标记一个块并将其中断

根据您的修改,终于仍在执行

foo = function(){
    var bar = Math.random() > .5;
    omgalabel: try {
        if( bar ) break omgalabel;
        console.log( bar );
        // code 
    }
    catch( e ){
        //  This code should not execute if !!bar 
    }
    finally {
        // Code that executes no matter what
        console.log( true );
    }
}

答案 1 :(得分:1)

foo = function(){

    var bar = Math.random() > .5;
    if( ! bar ) {
        try{
            //  This code should not execute if !!bar 
            alert( bar );
        }
        catch( e ){
            console.error(e);
        }
    }

    // Code that executes no matter what
    alert( true );
}

foo();

为什么不在输入try…catch之前检查布尔值?

答案 2 :(得分:0)

[][[ID] = [^.ID]].Sum([Balance])

您可以在try catch内抛出错误,并检测错误堆栈的字符串以查看它是预期的抛出还是意外的实际错误