JavaScript 中 Error 对象的详解

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

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 网页增加动态功能。

    730 引用 • 1284 回帖

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 79 关注
  • 叶归
    14 引用 • 62 回帖 • 24 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    22 引用 • 148 回帖 • 13 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    315 引用 • 547 回帖 • 2 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    173 引用 • 414 回帖 • 360 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    5 引用 • 16 回帖 • 1 关注
  • RemNote
    2 引用 • 16 回帖 • 27 关注
  • 反馈

    Communication channel for makers and users.

    120 引用 • 906 回帖 • 279 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 6 关注
  • wolai

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

    2 引用 • 14 回帖
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖 • 2 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1340 回帖
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖
  • OneDrive
    2 引用 • 1 关注
  • 外包

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

    26 引用 • 233 回帖 • 1 关注
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    1 引用 • 31 回帖
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    46 引用 • 114 回帖 • 166 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 650 关注
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    85 引用 • 324 回帖
  • ActiveMQ

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

    19 引用 • 13 回帖 • 685 关注
  • danl
    181 关注
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    32 引用 • 100 回帖 • 1 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    32 引用 • 108 回帖
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 1 关注
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖 • 2 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖