• fn {Function}
    • error {RegExp|Function}
    • message {string}

    断言 fn 函数不会抛出错误。

    使用 assert.doesNotThrow() 实际上没有用处,因为捕获错误然后重新抛出它没有任何好处。 应该考虑在不应抛出错误的特定代码路径旁边添加注释,并尽可能保留错误消息。

    当调用 assert.doesNotThrow() 时,它将立即调用 fn 函数。

    如果抛出错误并且它与 error 参数指定的类型相同,则抛出 [AssertionError]。 如果错误的类型不同,或者 error 参数未定义,则错误将传播回调用方。

    如果指定,则 error 可以是 [Class]、[RegExp] 或验证函数。 有关更多详细信息,请参见 [assert.throws()]。

    例如,以下示例将抛出 [TypeError],因为断言中没有匹配的错误类型:

    1. assert.doesNotThrow(
    2. () => {
    3. throw new TypeError('错误值');
    4. },
    5. SyntaxError
    6. );

    以下示例将导致 [AssertionError],并显示消息 ‘Got unwanted exception…’:

    1. assert.doesNotThrow(
    2. () => {
    3. throw new TypeError('错误值');
    4. },
    5. TypeError
    6. );

    如果抛出 [AssertionError] 并为 message 参数提供了值,则 message 的值将附加到 AssertionError 消息:

    1. assert.doesNotThrow(
    2. () => {
    3. throw new TypeError('错误值');
    4. },
    5. /错误值/,
    6. '出错啦'
    7. );
    8. // AssertionError: Got unwanted exception: 出错啦