zoukankan      html  css  js  c++  java
  • try/catch/finally 语句

    定义和用法

    try/catch/finally 语句用于处理代码中可能出现的错误信息。

    错误可能是语法错误,通常是程序员造成的编码错误或错别字。也 可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。

    try语句允许我们定义在执行时进行错误测试的代码块。

    catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。

    finally 语句在 try 和 catch 之后无论有无异常都会执行。

    注意: catch 和 finally 语句都是可选的,但你在使用 try 语句时必须至少使用一个。

    提示: 当错误发生时, JavaScript 会停止执行,并生成一个错误信息。使用 throw 语句 来创建自定义消息(抛出异常)。如果你将 throwtrycatch一起使用,就可以控制程序输出的错误信息。

    语法

    try {
        tryCode - 尝试执行代码块
    }
    catch(err) {
        catchCode - 捕获错误的代码块
    }
    finally {
        finallyCode - 无论 try / catch 结果如何都会执行的代码块
    }
    

    参数值

    参数 描述
    tryCode 必须。检查是否有错误的代码块。
    err 必须(如果使用 catch)。指定局部变量应用的错误。该变量可以引用 Error 对象 (包含发生的错误信息,如 "'addlert' 没有定义")。如果异常通过 throw 语句创建 , 该 变量引用了为在throw语句中指定的对象 (查看 "更多实例")
    catchCode 可选。如果 try 语句发生错误执行的代码块。如果 try 语句没发生错误该代码不会执行。
    finallyCode 可选。无论 try / catch 的结果如何都会执行。

    实例

    • 该实例检测输入的值是否错误,如果错误则抛出异常。异常通过 catch 语句捕获,并输出自定义信息:
    <p>请输入 5 和 10 之间的一个数:</p>
     
    <input id="demo" type="text">
    <button type="button" onclick="myFunction()">检测输入</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 "为空";
            if(isNaN(x)) throw "不是一个数字";
            if(x > 10)   throw "太大了";
            if(x < 5)    throw "太小了";
        }
        catch(err) {
            message.innerHTML = "输入的值 " + err;
        }
    }
    </script>
    
    • finally 语句无论 try 和 catch 执行结果如何都会执行:
    function myFunction() {
        var message, x;
        message = document.getElementById("message");
        message.innerHTML = "";
        x = document.getElementById("demo").value;
        try { 
            if(x == "")  throw "为空";
            if(isNaN(x)) throw "不是一个数字";
            if(x > 10)   throw "太大";
            if(x < 5)    throw "太小";
        }
        catch(err) {
            message.innerHTML = "输入的值 " + err;
        }
        finally {
            document.getElementById("demo").value = "";
        }
    }
    
    https://xiaodongxier.com
  • 相关阅读:
    【洛谷6620】[省选联考 2020 A 卷] 组合数问题(下降幂)
    【AtCoder】AtCoder Grand Contest 033 解题报告
    【AtCoder】AtCoder Grand Contest 034 解题报告
    【洛谷5445】[APIO2019] 路灯(树套树)
    【LOJ6059】「2017 山东一轮集训 Day1」Sum(倍增优化数位DP+NTT)
    【LOJ6159】「美团 CodeM 初赛 Round A」最长树链(树的直径)
    重新入门的Polya定理
    【洛谷6105】[Ynoi2010] y-fast trie(set)
    【BZOJ4480】 [JSOI2013] 快乐的jyy(回文自动机裸题)
    【LOJ6172】Samjia 和大树(树形DP+猜结论)
  • 原文地址:https://www.cnblogs.com/xiaodongxier/p/trycatchfinally-yu-ju.html
Copyright © 2011-2022 走看看