From c64ca56def8651c2ad679bcdf1283fa7560e88f3 Mon Sep 17 00:00:00 2001 From: Weijia Wang <381152119@qq.com> Date: Tue, 12 Dec 2017 09:27:35 +0800 Subject: [PATCH] util: improve error message of _errnoException The usage of ERR_INVALID_ARG_TYPE in _errnoException is a little inappropriate. This change is to improve it. PR-URL: https://github.com/nodejs/node/pull/17626 Reviewed-By: Ruben Bridgewater Reviewed-By: Rich Trott Reviewed-By: Colin Ihrig Reviewed-By: Evan Lucas Reviewed-By: Gireesh Punathil Reviewed-By: Luigi Pinca Reviewed-By: Joyee Cheung Reviewed-By: James M Snell --- lib/util.js | 9 ++++++--- test/parallel/test-uv-errno.js | 17 +++++++++++++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/lib/util.js b/lib/util.js index f9c33a759fa45b..e0cdc2c28f84d9 100644 --- a/lib/util.js +++ b/lib/util.js @@ -1056,9 +1056,12 @@ function error(...args) { } function _errnoException(err, syscall, original) { - if (typeof err !== 'number' || err >= 0 || !Number.isSafeInteger(err)) { - throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'err', - 'negative number'); + if (typeof err !== 'number') { + throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'err', 'number', err); + } + if (err >= 0 || !Number.isSafeInteger(err)) { + throw new errors.RangeError('ERR_OUT_OF_RANGE', 'err', + 'a negative integer', err); } const name = errname(err); var message = `${syscall} ${name}`; diff --git a/test/parallel/test-uv-errno.js b/test/parallel/test-uv-errno.js index 223be9058050d6..e4a40f20c84f9e 100644 --- a/test/parallel/test-uv-errno.js +++ b/test/parallel/test-uv-errno.js @@ -20,12 +20,25 @@ keys.forEach((key) => { }); }); -[0, 1, 'test', {}, [], Infinity, -Infinity, NaN].forEach((key) => { +['test', {}, []].forEach((key) => { common.expectsError( () => util._errnoException(key), { code: 'ERR_INVALID_ARG_TYPE', type: TypeError, - message: 'The "err" argument must be of type negative number' + message: 'The "err" argument must be of type number. ' + + `Received type ${typeof key}` + }); +}); + +[0, 1, Infinity, -Infinity, NaN].forEach((key) => { + common.expectsError( + () => util._errnoException(key), + { + code: 'ERR_OUT_OF_RANGE', + type: RangeError, + message: 'The value of "err" is out of range. ' + + 'It must be a negative integer. ' + + `Received ${key}` }); });