1、 throw new Error();   这个是创建错误,创造一个错误类型抛出

2、throw error   这个是抛出错误。

问题复现

在工作时遇到了需要抛出异常并且需要自己捕获处理的地方,于是在抛出的地方写下

function parseExcel(con) {try {// doSomething} catch (error) {throw new Error('parse excel failed');}
}

在捕获的地方写下:

try {parseExcel(con);
} catch (error) {if (error === 'parse excel failed') {//doSomething}
}

注意上面的异常处理有问题!!!
这里的写法不正确,未能成功取到error中的报错信息。

问题分析

可以肯定问题出在异常捕获而不是抛出
这里是使用了throw来抛出异常,并且还是使用
    throw new Error('error message');
这样的实例化写法,这样的写法是很规范的,是js规范所推崇的。但是这里需要注意的是,throw出去的是一个Error对象,而类似下面的这种字符串
    throw 'error message'; // 不建议的写法
所以捕获的时候捕获到的也是一个对象,这样一个对象与parse excel failed字符串比较显然是不正确的。
那么该怎么去捕获这个error message呢?
通过对《JavaScript高级程序设计 (第三版) 》对于抛出错误的学习我们可以了解到:

在抛出的Error对象中有一个被广泛支持的属性:name、message。
name:用来存储错误的类型,在ECMA-262定义了七种错误类型:Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError。详情见:try-catch语句
message:用来存储error message,就是你new Error()时候穿进去的参数
到此,上面的问题应迎刃而解。

问题解决

由于是异常捕获时候的错误所以我们在捕获的时候这样处理

try {parseExcel(con);
} catch (error) {if (error.message === 'parse excel failed') {//doSomething}
}

注意:写程序是一件很严谨的事情,一丝一毫也马虎不得,更不可想当然。

throw new Error() 真实的用法和throw error 的方法相关推荐

  1. throw new Error() 真实的用法和throw error 的却别

    1. throw new Error();   这个是创建错误,创造一个错误类型抛出 2.throw error   这个是抛出错误. 问题复现 在工作时遇到了需要抛出异常并且需要自己捕获处理的地方, ...

  2. Java中throw re_详解Java编程中throw和throws子句的使用方法

    java throw:异常的抛出程序可以用throw语句抛出明确的异常.throw语句的通常形式如下: throw throwableinstance; 这里,throwableinstance一定是 ...

  3. java的throw不常用吗_java中的throw与throws的区别

    什么时运行时异常?什么是非运行时异常? 通俗的讲: 运行时异常:就是编译通过,运行时就崩了,比如数组越界. 非运行时异常:就是编译不通过,这时就得必须去处理了.不然就没法运行了. 全面的讲: Thro ...

  4. java throw 什么意思_[转载]java中throw和throws的区别

    throw是一种控制程序流程的特殊方法而已.没有相应的catch的话,可以中止当前的方法继续执行. 关键字:throws 声明方法时候,如果不声明throws的话,那么一般的Exception都要在这 ...

  5. 联想集群超算LICO初次使用踩坑说明(遇到的错误,一些使用方法和singularity新建容器方法)

    联想集群超算LICO初次使用踩坑说明(遇到的错误,一些使用方法和singularity新建容器方法) 说明 本文主要写一些我这几天初次使用LICO的过程中遇到的一点问题和解决的办法,还有一些模块的规范 ...

  6. Conversion error:Jekyll::Converters::Scss encountered an error while converting css/main.scss

    错误描述:Conversion error: Jekyll::Converters::Scss encountered an error while converting 'css/main.scss ...

  7. localhost: Error: JAVA_HOME is not set. [Hadoop] Error: JAVA_HOME is not set

    localhost: Error: JAVA_HOME is not set. 在namenode启动脚本%Hadoop_HOME%/bin/start-dfs.sh的时候发现datanode报错: ...

  8. ERROR while rich displaying an object: Error: Continuous value supplied to discrete scale

    ERROR while rich displaying an object: Error: Continuous value supplied to discrete scale 目录 ERROR w ...

  9. 使用 EasyBCD 安装Ubuntu 14.04 Error 15: file not found错误的解决方法

    使用 EasyBCD 安装Ubuntu 14.04 Error 15: file not found错误的解决方法 参考文章: (1)使用 EasyBCD 安装Ubuntu 14.04 Error 1 ...

最新文章

  1. 企业/团队不会做目标管理,还怎么高执行力建设2021-02-24
  2. linux c 创建子进程 执行任务
  3. 【今日互联网大事儿】小米净化器出来了呢
  4. git 改了一段代码不想要了_初识Git
  5. 绝地求生12月18日服务器信息,绝地求生12月18号几点更新维护完 2019绝地求生12月18日更新维护开服时间...
  6. 蓝牙小电池图标_丽声小百科 | 乐趣助听器如何连接iPhone手机?
  7. html制作柱状图教程,基于Echarts的HTML5 Canvas折线图柱状图DEMO演示
  8. 1 计算机组成原理第一章 计算机系统概述 计算机发展历程、层次结构、性能指标
  9. 计算机网络课程设计之Tracert与Ping程序设计与实现
  10. 机器学习入门一 ------- 什么是机器学习,机器学习的在实际中的用处
  11. Oracle 警告:Weblogic 服务器中含有多个可遭远程利用的严重漏洞
  12. linux环境知识点备忘录
  13. PaddlePaddle入门整理十:PaddlePaddle训练自己的数据集
  14. 采用蒙特卡罗方法求解π值
  15. DROID-SLAM: Deep Visual SLAM for Monocular, Stereo, and RGB-D Cameras论文阅读笔记
  16. php获取星座对应的日期,获取生日对应星座的PHP函数
  17. win10 你的手机
  18. JAVA-SUST实验一 JSP技术及JSP语法基础
  19. VisualSVN Server ,TotoiseSVN 的配置和使用方法 (图文)
  20. ReDim, split

热门文章

  1. java知识精华总结
  2. winSCP:无权访问。 错误码:3 服务器返回的错误消息:Permission denied解决方案
  3. 基于egret的小游戏——拼图
  4. 罗永浩自曝下个创业项目是元宇宙
  5. .gitignore 不生效的解决方案
  6. Ubuntu18.04系统安装及深度学习框架搭建
  7. Linux DTS中和中断相关属性的解释和用法
  8. java properties map_为什么java.util.Properties实现Map而不是Map
  9. 网桥(生成树网桥和源路由网桥)
  10. jenkins使用时遇到“using GIT_ASKPASS to set credentials”