zoukankan      html  css  js  c++  java
  • js中try、catch、finally的执行规则

    首先一个常识就是,在浏览器执行JS脚本过程中,当出现脚本错误,并且你没有手动进行异常捕捉时,他会在浏览器下面出现黄色的叹号,这是正常的,这也不是最重要的,最重要的是,出错行以下的所有JS代码将中停执行,这是我们不希望看到的,所以说,对于自己写的,拿不准的脚本还是加上异常捕捉比较好。

    try:  语句测试代码块的错误,一般把可能会出错的代码放到这里

    catch: 只有try里面的代码块发生错误时,才会执行这里的代码,参数err记录着try里面代码的错误信息

    finally: 无论有无异常里面代码都会执行

    使用场景为容易出错的,容易产生兼容问题的代码段加上try..catch合处理那些我们无法控制的错误,如I/O操作,后端java读取I/O操作比较多比如读数据库,所以用try catch比较多。前端可以用在上传图片或async await同步调接口。

    ECMA-262第3版引入了try catch语句,作为JavaScript中处理异常的一种标准方式。但是在前端js代码中很少看到try catch语句,并不是所以代码都需要加try catch来作得不偿失的“保险”。

     

    try catch缺点

      1.try catch耗性能

      2.try catch捕获不到异步错误

      3.try catch可能会导致报错点更模糊

     

    顺序:

     

    try里面的代码报错的时候,catch里面的代码才会执行,finally里面的代码永远会执行

     

    catch和finally里面,正常的代码会从上到下顺序执行

     

    如果只是catch里面代码出错,则报catch里面的错误

     

    如果catch和finally都出错则会报finally里面的错误

    例子1

    <script>
        var a = "hello"; 
            try{
                alert(a);        //如果是不存在的变量,则抛出异常,将直接跳到catch里面执行(throw定义异常也不会被抛出)
           throw "不存在";        //定义抛出异常
                alert("I am try");      //只要上面的语句出现错误或者throw语句这句将不会被执行
            }catch(err){
          //如果try中发现错误,则执行catch中的语句,如果没有错误,则跳过catch
    alert(err)
    //接收设置的throw错误异常,如果没有则抛出根据情况默认错误 alert("错误弹出"); //被执行 }finally{ alert("无论如何都会执行"); } // var b="world"; // if(b){ // document.write(b); // }else{ // alert("error"); // } </script>

    err具有下面一些主要属性: 

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



     

     

  • 相关阅读:
    svn忽略不需要同步的文件夹或文件
    Redis 字符串(String)
    Redis 数据类型
    Linux下安装rabbitMQ
    Windows平台下Git服务器搭建
    Linux下安装redis
    JVM调优总结
    Tomcat优化配置
    通过profile 用maven命令打不同配置的变量包
    Log4j日志配置说明
  • 原文地址:https://www.cnblogs.com/jing-tian/p/11074718.html
Copyright © 2011-2022 走看看