JavaScript try/catch/finally 语句

实例

在下面的例子中,我们故意在 try 块的代码中写了一个错字。

该实例本应该提醒"欢迎光临!",但弹出的是拼写错误信息。

catch 块会捕捉到 try 块中的错误,并执行代码来处理它:

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
try {
    adddlert("欢迎光临!");
}
catch(err) {
    document.getElementById("demo").innerHTML = err.message;
}
</script>

</body>
</html>

尝试一下 »

本文底部包含了更多实例


定义和用法

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

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

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

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

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

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

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

更多关于 JavaScript 错误,请参阅我们的 JavaScript 错误 教程。


浏览器支持

语句          
try/catch/finally Yes Yes Yes Yes Yes


语法

try {
     tryCode - 尝试执行代码块
}
catch( err) {
     catchCode - 捕获错误的代码块

finally {
     finallyCode - 无论 try / catch 结果如何都会执行的代码块
}

参数值

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

技术细节

JavaScript 版本: 1.4


实例

更多实例

实例

该实例检测输入的值是否错误,如果错误则抛出异常。

异常通过 catch 语句捕获,并输出自定义信息:

<!DOCTYPE html>
<html>
<body>

<p>Please input a number between 5 and 10:</p>

<input id="demo" type="text">
<button type="button" οnclick="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 执行结果如何都会执行:

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 = "";
    }
}

尝试一下 »
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
try/catch语句JavaScript中处理异常的一种标准方式。它的基本语法是在try代码块中编写可能导致错误的代码,如果出现异常,程序会跳转到catch代码块中进行异常处理。 在try/catch语句中,catch代码块是可选择的,用于捕获并处理异常。如果try代码块中发生异常,程序会跳转到catch代码块中执行相应的异常处理逻辑。而finally代码块是一定会执行的,无论try代码块是否发生异常finally代码块都会被执行。 异常抛出后会一直返回调用函数(或者说上一层函数),直到被catch到。因此,可以将catch语句写在一起,以便对多个异常进行统一处理,从而使代码更加整洁和方便。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [try-catch语句](https://blog.csdn.net/weixin_42561383/article/details/99687113)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [trycatch语句解析](https://blog.csdn.net/weixin_46953330/article/details/129556570)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [try/catch/throw](https://download.csdn.net/download/weixin_38595473/14887209)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值