代码之家  ›  专栏  ›  技术社区  ›  Benjamin Ashbaugh

从if块中执行else块

  •  0
  • Benjamin Ashbaugh  · 技术社区  · 5 年前

    if (is_valid) {
      some code;
    
      if (!something_else_is_valid) {
        // Skip to else to handle error;
      }
    } else {
      handle_error_here;
    }
    

    我知道我可以将handle\u error功能移到另一个函数,但我不想这样做。

    感谢您的回答/评论!

    3 回复  |  直到 5 年前
        1
  •  1
  •   Ele    5 年前

    else 条件。

    你可以用这句话 switch . 这个 break 关键字停止下游执行。如果 something_else_is_valid 如果是假的 不会发生,所以 转换 default 案例,即“错误案例”。

    function A(is_valid, something_else_is_valid) {
      switch(is_valid) {
        case true: 
          // some code
          if (something_else_is_valid) {
            // do somthing
            break;
          } // else, will reach default case.
        default:
          throw new Error("Wrong!");
          // handle_error_here
      }
    }
    
    A(true, false);
        2
  •  2
  •   Estradiaz    5 年前

    永不言败: -他们会恨你这么做,但是嘿:

    var else_ = false
    var if_ = true
    
    IF: 
    {
     if(if_){
        console.log("entered IF BLOCK")
        var second = false
        if(!second){
          console.log("exits to ELSE BLOCK")
          else_ = true
          break IF;
          console.log("this will not be executed - its skipped")
        }
     }
    }
    ELSE: {
      if(!else_) break ELSE;
      console.log("entered ELSE BLOCK")
      
    }

    相应地标记块,可以将if块退出到else块中;)

        3
  •  1
  •   CertainPerformance    5 年前

    if 如果输入,则无法回溯,尽管可以使用递归方式调用包含函数 is_valid 属于 false

    function doTest(is_valid) {
      if (is_valid) {
        // some code;
    
        if (!something_else_is_valid) {
          return doTest(false);
        }
      } else {
        // handle_error_here;
      }
    }
    

    你可以用 try/catch

    try {
      if (!is_valid) {
        throw new Error();
      }
      // some code;
      if (!something_else_is_valid) {
        throw new Error();
      }
    } catch(e) {
      // handle_error_here;
    }
    

    甚至比两者都好 在一个你可以调用的函数中处理错误,但是你说你不想这样做。

        4
  •  0
  •   Jack Bashford    5 年前

    不,你不能-你必须结合以下条件:

    if (is_valid && something_else_is_valid) {
        //Some code
    } else {
        handle_error_here();
    }