- 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)
