Try.Catch.Finally简单总结

本文深入探讨了JavaScript中try-catch-finally语句的使用方法及其行为特性,包括嵌套try-catch的工作机制、return语句在finally块中的表现以及如何自定义错误类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

示例一、
try执行正确的时候

这里写图片描述

结果输出:

这里写图片描述


try执行错误的时候,(把toLocaleString的e去除)

这里写图片描述

结果输出:

这里写图片描述

try内放一条可能产生错误的语句。当try语句开始执行并抛出错误时,catch才执行内部的语句和对应的try内的错误信息message。何时执行finally语句,只有当try语句和catch语句执行之后,才执行finally语句,不论try抛出异常或者catch捕获都会执行finally语句。


示例二、

这里写图片描述

结果输出:

这里写图片描述


这里写图片描述

结果输出:

这里写图片描述

finally输出不受try和catch的限制和约束


示例三、

这里写图片描述

结果输出: 空


示例四、

这里写图片描述

结果输出:

这里写图片描述


这里写图片描述
结果输出:

这里写图片描述

当我们在try可能引发错误的代码块内嵌套try catch,通过嵌套的代码块try内扔一条可能出现错误的语句 throw new Error(‘error throw start’);,紧接着嵌套的try将错误传递给嵌套的catch处理,最终通过嵌套的finally运行过后,我们看到最后一条结果,其实嵌套的catch捕获的错误信息扔给最外层catch捕获的
也就是说:任何给定的异常只会被离它最近的封闭catch块捕获一次。
当然,在“内部”块抛出的任何新异常(因为catch块里的代码也可以抛出异常),都将会被“外部”块所捕获


Error的扩展:

description: 错误描述 (仅IE可用).
fileName: 出错的文件名 (仅Mozilla可用).
lineNumber: 出错的行数 (仅Mozilla可用).
message: 错误信息 (在IE下同description)
name: 错误类型.
number: 错误代码 (仅IE可用).
stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用).

补充于2018-08-02:

1.return问题

注意:当包含finally语句时,无论try还是catch语句中的return都将被忽略。

下面的代码结果会返回3,而不是1。

function ex(){
    try{
        return 1;
    }catch(e){
        return 2;
    }finally{
        return 3;
    }
}



2.自定义错误类型

如果想自定义错误类型区分于其他浏览器错误,还可以利用原型链通过继承Error来创建自定义错误类型。

需要做的是,为创建的错误类型指定name和message属性。

function customError(message){

    this.name = 'MyError';
    this.message = message;
}

customError.prototype = new Error();

throw new customError('error message');

结果浏览器抛出错误: Uncaught MyError: error message

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值