JavaScript try/catch/finally 语句参考

  • JavaScript try/catch/finally 语句

    try/catch/finally语句处理在代码块中可能发生的部分或全部错误但仍然运行代码。错误可以是程序员所犯的编码错误,错误的输入,以及其他不可预见的事情。try语句允许您定义一个代码块,以便在执行时对其进行错误测试。catch语句允许您定义要执行的代码块,如果try块中发生错误。finally语句允许您在try和catch之后执行代码,而不管结果如何。
    注意:catchfinally语句都是可选的,但是在使用try语句时需要使用其中一个(如果不是两个)。
    提示:当发生错误时,JavaScript通常会停止,并生成一条错误消息。使用throw语句创建自定义错误(抛出异常)。如果您同时使用throw和try和catch,则可以控制程序流并生成自定义错误消息。
    有关JavaScript错误的更多信息,请阅读JavaScript错误教程
    在这个例子中,我们在代码中(在try块中)输入了一个拼写错误。该示例应该提醒“欢迎客人!”,但警报拼写错误。catch块捕获错误,并执行代码来处理它:
    <!DOCTYPE html>
    <html>
    <body>
    
    <p id="demo"></p>
    
    <script>
    try {
      adddlert("Welcome guest!");
    }
    catch(err) {
      document.getElementById("demo").innerHTML = err.message;
    }
    </script>
    
    </body>
    </html>
    
    尝试一下
  • 浏览器支持

    IE/Edge Chrome FireFox Safari Opera
    语句
    try/catch/finally
    支持
    支持
    支持
    支持
    支持
  • 语法

    try {
      tryCode - 要尝试的代码块
    }
    catch(err) {
      catchCode - 用于处理错误的代码块
    } 
    finally {
      finallyCode - 无论try/catch结果如何,都要执行的代码块
    }
  • 参数值

    参数 描述
    tryCode 必需的。 在执行错误时要测试的代码块
    err 如果与catch一起使用则必需。 指定引用错误的局部变量。 该变量可以引用Error对象(包含有关发生的错误的信息,如消息“'addlert'未定义”)。 如果异常是由throw语句创建的,则变量引用throw语句中指定的对象(请参阅“更多示例”)
    catchCode 可选的。 如果try块中发生错误,则执行代码块。 如果没有错误发生,则永远不会执行此代码块
    finallyCode 可选的。 无论try/catch结果如何,都要执行的代码块
  • 技术细节

    项目 描述
    JavaScript版本: ECMAScript 3
  • 更多例子

    此示例检查输入。如果值错误,则抛出异常(错误)。catch语句捕获异常(错误),并显示自定义错误消息:
    <!DOCTYPE html>
    <html>
    <body>
    
    <p>Please input a number between 5 and 10:</p>
    
    <input id="demo" type="text">
    <button type="button" onclick="myFunction()">Test Input</button>
    <p id="message"></p>
    
    <script>
    function myFunction() {
      var message, x;
      message = document.getElementById("message");
      message.innerHTML = "";
      x = document.getElementById("demo").value;
      try { 
        if(x == "") throw "is Empty";
        if(isNaN(x)) throw "not a number";
        if(x > 10) throw "too high";
        if(x < 5) throw "too low";
      }
      catch(err) {
        message.innerHTML = "Input " + err;
      }
    }
    </script>
    
    </body>
    </html>
    
    尝试一下
    finally声明中,您可以执行try和catch代码后,无论结果如何都会执行finally中代码块:
    function myFunction()
      var message, x;
      message = document.getElementById("message");
      message.innerHTML = "";
      x = document.getElementById("demo").value;
      try { 
        if(x == "") throw "Empty";
        if(isNaN(x)) throw "Not a number";
        if(x > 10) throw "Too high";
        if(x < 5) throw "Too low";
      }
      catch(err) {
        message.innerHTML = "Error: " + err + ".";
      }
      finally {
        document.getElementById("demo").value = "";
      }
    }
    
    尝试一下
  • 相关页面

    JavaScript教程:JavaScript 错误(Error)