assert.doesNotThrow(fn[, error][, message])


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

¥Asserts that the function fn does not throw an error.

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

¥Using assert.doesNotThrow() is actually not useful because there is no benefit in catching an error and then rethrowing it. Instead, consider adding a comment next to the specific code path that should not throw and keep error messages as expressive as possible.

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

¥When assert.doesNotThrow() is called, it will immediately call the fn function.

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

¥If an error is thrown and it is the same type as that specified by the error parameter, then an AssertionError is thrown. If the error is of a different type, or if the error parameter is undefined, the error is propagated back to the caller.

如果指定,则 error 可以是 Class<RegExp> 或验证函数。有关详细信息,请参阅 assert.throws()

¥If specified, error can be a Class, <RegExp>, or a validation function. See assert.throws() for more details.

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

¥The following, for instance, will throw the <TypeError> because there is no matching error type in the assertion:

import assert from 'node:assert/strict';

assert.doesNotThrow(
  () => {
    throw new TypeError('Wrong value');
  },
  SyntaxError,
);const assert = require('node:assert/strict');

assert.doesNotThrow(
  () => {
    throw new TypeError('Wrong value');
  },
  SyntaxError,
);

然而,以下将导致 AssertionError 和消息 '出现不需要的异常...':

¥However, the following will result in an AssertionError with the message 'Got unwanted exception...':

import assert from 'node:assert/strict';

assert.doesNotThrow(
  () => {
    throw new TypeError('Wrong value');
  },
  TypeError,
);const assert = require('node:assert/strict');

assert.doesNotThrow(
  () => {
    throw new TypeError('Wrong value');
  },
  TypeError,
);

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

¥If an AssertionError is thrown and a value is provided for the message parameter, the value of message will be appended to the AssertionError message:

import assert from 'node:assert/strict';

assert.doesNotThrow(
  () => {
    throw new TypeError('Wrong value');
  },
  /Wrong value/,
  'Whoops',
);
// Throws: AssertionError: Got unwanted exception: Whoopsconst assert = require('node:assert/strict');

assert.doesNotThrow(
  () => {
    throw new TypeError('Wrong value');
  },
  /Wrong value/,
  'Whoops',
);
// Throws: AssertionError: Got unwanted exception: Whoops