JavaScript 中 Error 对象的详解

本贴最后更新于 2663 天前,其中的信息可能已经沧海桑田

Error:一个一般性的异常。

Error 的构造:

 new Error();

 new Error(message);

参数:

message:一条可选的错误消息,用于提供关于该异常的细节。

返回:

一个新构建的 Error 对象。如果指定 message 参数,则该 Error 对象将它用做它的 message 属性值。其他情况下,它将使用一个预定于的默认字符串作为该属性的值。当不使用 new 操作符,直接将 Error()构造函数像一个函数一样调用时,它的行为和带 new 操作符调用时一样。

属性:

message:提供关于该异常的细节的一条错误消息。这个属性的值为传给构造函数的字符串或一个预定义的默认字符串。
  
name:一个指定该异常的类型的字符串。对 Error 类和它所有的子类而言,这个属性指定了用于创建该实例的构造函数的名字。

方法:

toString():返回一个表示该 Error 对象的预定义字符串。

描述:

Error 类实例表示的错误或异常通常配合 throw 和 try/catch 语句一起使用。name 属性指明该异常的类型,message 属性则提供了该异常的人类可读细节。
  
JavaScript 解释器永远不会直接抛出 Error 对象,它只会抛出 Error 的子类,如 URIError、EvalError、SyntaxError 等。我们通常在自己的代码中,抛出 Error 对象来发出异常信息会更加方便一些,或者使用一个原始字符串或数值来抛出一条错误消息或是一个错误代码。
  
ECMAScript 标准为 Error 类定义了一个 toString()方法,且所有子类都继承了该方法,但它并不要求 toString()方法返回的字符串包含 message 属性。所以,不要太依赖或期望 toString()方法会将一个 Error 对象转换为一个有意义的、人类可读的字符串。在向用户显示错误信息时,我们可以使用 Error 对象的 name 和 message 属性。

手动异常抛出:

function  aDemo(  x  )  {
   if  (  x  <  0  )  {
			  throw  new  Error("x 小于 0 了");
  }
  
   if  (  x  <=  1  )  {
		  return  1;
  }  else  {
		  return  x  *  aDemo(  x  -  1  )
  }
  
}

如果捕获一个异常,则可以像下面这么去做:

try  {
  aDemo(  -1  );/* 这儿将抛出一个异常 */
}  catch  (  e  )  {
  if  (  e  instanceof  Error  )  {
  alert(  e.name  +  ":"  +  e.message  );
  }
}

例如我们在工作和学习中,常遇到的 Error 有: EvalError、 RangeError、 ReferenceError、 SyntexError、 TypeError、 URIError 。

Error.message:人类可以读懂的错误消息。如果像 Error()构造传入 messgae 参数,则该参数将会时这个 message 属性的值。如果没有传则 Error 对象的这个属性将继承预定义的默认值(一般情况下是空)。
  
Error.name:错误的类型。name 属性为发生错误或异常的类型。所有 Error 对象都从他们的构造函数上继承这个属性。这个属性的值和它们的构造函数的名称相同。也就是说,EvalError 对象的 name 属性为 “EvalError “,TypeError 对象的 name 属性为”TypeError”。
  
Error.toString():将一个 Error 对象转为字符串。ECMAScript 标准化没有指定这个方法的返回值的任何信息,返回的字符串并不要求包含错误名或错误消息。

原文出处:(http://www.baikeyang.com/code/97069.html

  • Error对象
    1 引用 • 2 回帖
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    713 引用 • 1174 回帖 • 118 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    4 引用 • 55 回帖 • 1 关注
  • sts
    2 引用 • 2 回帖 • 164 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    40 引用 • 40 回帖 • 1 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 263 关注
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 688 关注
  • OnlyOffice
    4 引用 • 15 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 1 关注
  • 博客

    记录并分享人生的经历。

    272 引用 • 2386 回帖 • 2 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 60 回帖 • 457 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 232 回帖
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 569 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    262 引用 • 664 回帖 • 2 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 611 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    90 引用 • 383 回帖 • 1 关注
  • 自由行
    2 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    138 引用 • 268 回帖 • 147 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    198 引用 • 120 回帖 • 1 关注
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 703 关注
  • 创业

    你比 99% 的人都优秀么?

    83 引用 • 1398 回帖
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 31 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖 • 1 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    71 引用 • 1736 回帖 • 7 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    25 引用 • 191 回帖 • 24 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 643 关注