- Node.js 教程
- Node.js - 首页
- Node.js - 简介
- Node.js - 环境搭建
- Node.js - 第一个应用程序
- Node.js - REPL 终端
- Node.js - 命令行选项
- Node.js - 包管理器 (NPM)
- Node.js - 回调函数概念
- Node.js - 上传文件
- Node.js - 发送邮件
- Node.js - 事件
- Node.js - 事件循环
- Node.js - 事件发射器
- Node.js - 调试器
- Node.js - 全局对象
- Node.js - 控制台
- Node.js - 进程
- Node.js - 应用程序扩展
- Node.js - 打包
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 缓冲区
- Node.js - 流
- Node.js - 文件系统
- Node.js MySQL
- Node.js - MySQL 快速入门
- Node.js - MySQL 创建数据库
- Node.js - MySQL 创建表
- Node.js - MySQL 插入数据
- Node.js - MySQL 查询数据
- Node.js - MySQL 条件查询
- Node.js - MySQL 排序
- Node.js - MySQL 删除数据
- Node.js - MySQL 更新数据
- Node.js - MySQL 连接查询
- Node.js MongoDB
- Node.js - MongoDB 快速入门
- Node.js - MongoDB 创建数据库
- Node.js - MongoDB 创建集合
- Node.js - MongoDB 插入数据
- Node.js - MongoDB 查找数据
- Node.js - MongoDB 查询
- Node.js - MongoDB 排序
- Node.js - MongoDB 删除数据
- Node.js - MongoDB 更新数据
- Node.js - MongoDB 数据限制
- Node.js - MongoDB 连接查询
- Node.js 模块
- Node.js - 模块
- Node.js - 内置模块
- Node.js - 实用程序模块
- Node.js - Web 模块
- Node.js 有用资源
- Node.js - 快速指南
- Node.js - 有用资源
- Node.js - 讨论
Node.js - assert.doesNotThrow() 函数
Node.js 的 `assert.doesNotThrow()` 函数断言作为参数传递给 `fn` 的函数不会抛出错误。
使用 `assert.doesNotThrow()` 函数并没有什么用,因为它捕获错误后再抛出并没有实际好处。相反,当为不应抛出错误的特定代码添加注释时,它会更具表达性。
语法
以下是 **Node.js assert.doesNotThrow() 函数** 的语法:
assert.doesNotThrow(fn[, error][, message]);
参数
此函数接受三个参数,如下所述。
**fn** − (必填) 此参数包含一个函数 `fn`,并期望该函数不会抛出错误。
**error** − (可选) 此参数可以是 **RegExp、验证函数**。
**message** − (可选) 可以将 `String` 或 `Error` 类型作为输入传递给此参数。
返回值
此函数断言函数 `fn` 不会抛出错误。如果抛出错误,则会有两种情况:
如果错误类型与 `error` 参数相同,则 `assert.doesNotThrow()` 函数会向输出抛出一个 `AssertionError`。
如果未传递 `error` 参数或错误类型不匹配,则会向调用者传播错误。
示例
在下面的示例中,我们创建一个函数,并在函数内部调用 `TypeError`。
const assert = require('assert').strict; function func(){ throw new TypeError('Error...'); }; assert.doesNotThrow( () => { func(); }, TypeError );
输出
执行上述程序后,它将导致出现包含消息“出现意外异常”的 `AssertionError`。
assert.js:79 throw new AssertionError(obj); ^ AssertionError [ERR_ASSERTION]: Got unwanted exception. Actual message: "Error..." at Object.<anonymous> (/home/cg/root/639c2bf348ea8/main.js:7:8) at Module._compile (internal/modules/cjs/loader.js:702:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10) at Module.load (internal/modules/cjs/loader.js:612:32) at tryModuleLoad (internal/modules/cjs/loader.js:551:12) at Function.Module._load (internal/modules/cjs/loader.js:543:3) at Function.Module.runMain (internal/modules/cjs/loader.js:744:10) at startup (internal/bootstrap/node.js:238:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)
示例
在下面的示例中,我们创建一个函数,并在函数内部调用 `TypeError`。但是 `error` 参数持有 `SyntaxError` 而不是 `TypeError`,它们是不同类型的错误。
const assert = require('assert'); function func(){ throw new TypeError('Error...'); } assert.doesNotThrow( () => { func() }, SyntaxError);
输出
执行上述程序后,函数将抛出 `TypeError` 而不是 `AssertionError`,因为断言中没有匹配的错误类型。
assert.js:604 throw actual; ^ TypeError: Error... at func (/home/cg/root/639c2bf348ea8/main.js:4:9) at assert.doesNotThrow (/home/cg/root/639c2bf348ea8/main.js:7:30) at getActual (assert.js:497:5) at Function.doesNotThrow (assert.js:616:32) at Object.<anonymous> (/home/cg/root/639c2bf348ea8/main.js:7:8) at Module._compile (internal/modules/cjs/loader.js:702:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10) at Module.load (internal/modules/cjs/loader.js:612:32)at tryModuleLoad (internal/modules/cjs/loader.js:551:12) at Function.Module._load (internal/modules/cjs/loader.js:543:3)
示例
在下面的示例中,我们创建一个函数,并在函数内部调用带有错误消息的 `TypeError`。我们还将文本传递给 `message` 参数。
const assert = require('assert'); function func(){ throw new TypeError('Error...'); } assert.doesNotThrow( () => { func() }, /Error.../, 'This is a text from MESSAGE parameter.');
输出
由于参数与 `TypeError` 中的错误消息相同,因此函数将抛出 `AssertionError` 并将 `message` 输出到结果。
assert.js:79 throw new AssertionError(obj); ^AssertionError [ERR_ASSERTION]: Got unwanted exception: This is a text from MESSAGE parameter. Actual message: "Error..." at Object.<anonymous> (/home/cg/root/639c2bf348ea8/main.js:7:8) at Module._compile (internal/modules/cjs/loader.js:702:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10) at Module.load (internal/modules/cjs/loader.js:612:32) at tryModuleLoad (internal/modules/cjs/loader.js:551:12) at Function.Module._load (internal/modules/cjs/loader.js:543:3) at Function.Module.runMain (internal/modules/cjs/loader.js:744:10) at startup (internal/bootstrap/node.js:238:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)