JavaScript:异常

异常

异常处理:JS代码在运行时如果有错误,那么从错误位置开始下面所有的代码不会被执行(不管后面的代码是否正常),也就是说代码运行时出错会有阻断后面程序执行的功能。

但是如果在开发时,不确定某段代码是否有错误。那么这个时候建议用try  catch语句将这段代码进行封装,放到try中的内容为不确定是否有问题的代码。如果代码没有问题则正常执行try中的内容。如果try中的内容真的有错误,那么程序在执行到try中的内容时会抛出错误信息,然后继续执行后面的正常的JS代码,打破了阻断程序执行的问题。格式如下:

try {
    //可能出现问题的代码段
}catch(e) { 
    //处理程序
}

try中放置的是可能出现错误的代码,catch中通常放置对错误代码的处理方式,默认可以不处理。

catch小括号里面的e表示代表当前错误的对象,包含两个属性name和message,name表示错误的类型、message表示错误的提示信息。我们可以用这两个属性分会获取错误类型和信息,也可以直接处理e这个对象。

try {
    console.log(num);
} catch (e) {
    console.log(e.name);
    console.log(e.message);
    console.log(e);
}

JS代码执行顺序

语法检查、预编译、运行

语法检查

当<script>标签加载完成后,js引擎会对这段代码的语法进行检查,如果有语法错误,那么这一整段代码都不会被执行。try catch在语法检查阶段是不起作用的

<script type="text/javascript">
    try{
        console.log("script1"
    }catch (e) {
        
    }
</script>
<script type="text/javascript">
    console.log("script2");
</script>

预编译

  1. 将当前作用域中的变量和函数添加到变量对象
  2. 函数声明提升和变量声明提升。函数声明先提升、然后变量声明提升。如果函数名和变量名相同,在没有变量赋值时,变量中装的是函数的地址,如果给变量赋值,那么变量中装的是变量的值,简单说此时的变量已经不是函数了
<script type="text/javascript">
    function fn () {
        console.log("hello");
    }
    var fn;
    console.log(fn);
</script>
<script type="text/javascript">
    function fn () {
        console.log("hello");
    }
    var fn = 1;
    console.log(fn);
</script>

运行

  1. 在执行阶段,如果执行的代码中有运行错误,那么该错误前面的语句会正常执行,但是后面的语句会被阻断执行,所以此时我们try catch解决此问题
  2. 当执行到函数时,会在该函数的作用域中创建一个活动对象,并将该作用域中的变量、形参添加到该对象上,然后将该作用域中的变量做声明提升,提升到该作用域的顶端。将实参的值赋值该形参,执行函数体功能性语句
  3. 当此段<script>标签执行完成后,加载下段<script>标签,然后继续上面的操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值