zoukankan      html  css  js  c++  java
  • JS异常捕获和抛出

     try...catch 用来异常捕获(主要适用于IE5以上内核的浏览器,也是最常用的异常捕获方式)

    使用onerror时间捕获异常,这种捕获方式是比较古老的一中方式,目前一些主流的浏览器暂不支持这种

    捕获方式。

    捕获异常的语法如下:

    try {

      //运行代码

    } catch(err) {

      //处理错误

    }

    测试示例代码如下,abc是一个未定义的函数,会抛出异常,异常信息会被try catch,进入catch语句中执行

    var msg = "";
    try{
      abc();
    }catch(err){
      console.log(err)
      console.log(err.message);
    }

    如果把try  catch 去掉的话 ,会出现什么情况呢?

    控制台报错了 ,而且后续中断没有执行,因为添加的日志打印信息没有执行,。针对

    这种没有捕获的异常,会异常中断程序,页面上没有合理的提示信息,用户会莫名其妙

    体验非常不好。

    以上是针对try catch的使用方法的描述,还有一种情况就是,需要自定义一个异常然后抛出,

    比如某个条件不符合或是值为空的情况,需要抛出异常,提示用户,暂停后续程序的执行,

    这种情况就需要throw一个exception

    var num = "a";
    try {
      if(num==" ")    throw   "值为空"//刚才这个地方的分号写成中文状态下的分号,结果出出错了
      if(isNaN(num))  throw    "不是数字";
    }
    catch(err){
      alert("错误信息:"+err);
    }

    刷新浏览器,看看throw出来的异常提示信息,就是我们定义的错误信息“不是数字”,

    因为num的值为a,判断为空的语句通过,判断是否数字的语句抛出异常

    通过上面的例子可以发现,异常场景都在我们的控制范围之内,

    不会出现什么未知和突然中断程序的异常

     通过上面有异常捕获和没有异常捕获的情况对比来看,

    没有捕获处理异常的情况,非常不友好,程序也缺少健壮性

  • 相关阅读:
    配置日志
    部署项目到jetty
    部署web应用程序到tomcat
    spring boot 整合mybatis
    创建spring boot 项目
    发送http请求
    pom.xml文件中dependency标签的scope子标签
    Ubuntu apparmor何方神圣
    Ubuntu Nginx下配置网站ssl实现https访问
    打造私有的DNS 服务
  • 原文地址:https://www.cnblogs.com/agansj/p/9194156.html
Copyright © 2011-2022 走看看