1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-06 02:15:48 +03:00

Use built-in error classes to make errors more specific

This commit is contained in:
Ruben Bridgewater
2016-04-25 01:35:56 +02:00
parent 5368e7477e
commit bf394923fd
3 changed files with 9 additions and 10 deletions

View File

@@ -12,7 +12,7 @@ module.exports = function createClient (port_arg, host_arg, options) {
host = host_arg;
} else {
if (options && host_arg) {
throw new Error('Unknown type of connection in createClient()');
throw new TypeError('Unknown type of connection in createClient()');
}
options = options || host_arg;
}
@@ -50,14 +50,14 @@ module.exports = function createClient (port_arg, host_arg, options) {
if (options[elem] === parsed.query[elem]) {
console.warn('node_redis: WARNING: You passed the ' + elem + ' option twice!');
} else {
throw new Error('The ' + elem + ' option is added twice and does not match');
throw new RangeError('The ' + elem + ' option is added twice and does not match');
}
}
options[elem] = parsed.query[elem];
}
}
} else if (parsed.hostname) {
throw new Error('The redis url must begin with slashes "//" or contain slashes after the redis protocol');
throw new RangeError('The redis url must begin with slashes "//" or contain slashes after the redis protocol');
} else {
options.path = port_arg;
}
@@ -67,12 +67,12 @@ module.exports = function createClient (port_arg, host_arg, options) {
options.host = options.host || host_arg;
if (port_arg && arguments.length !== 1) {
throw new Error('To many arguments passed to createClient. Please only pass the options object');
throw new TypeError('To many arguments passed to createClient. Please only pass the options object');
}
}
if (!options) {
throw new Error('Unknown type of connection in createClient()');
throw new TypeError('Unknown type of connection in createClient()');
}
return options;

View File

@@ -13,7 +13,7 @@ All documented and exposed API belongs in here
RedisClient.prototype.send_command = RedisClient.prototype.sendCommand = function (command, args, callback) {
// Throw to fail early instead of relying in order in this case
if (typeof command !== 'string') {
throw new Error('Wrong input type "' + (command !== null && command !== undefined ? command.constructor.name : command) + '" for command name');
throw new TypeError('Wrong input type "' + (command !== null && command !== undefined ? command.constructor.name : command) + '" for command name');
}
if (!Array.isArray(args)) {
if (args === undefined || args === null) {
@@ -22,11 +22,11 @@ RedisClient.prototype.send_command = RedisClient.prototype.sendCommand = functio
callback = args;
args = [];
} else {
throw new Error('Wrong input type "' + args.constructor.name + '" for args');
throw new TypeError('Wrong input type "' + args.constructor.name + '" for args');
}
}
if (typeof callback !== 'function' && callback !== undefined) {
throw new Error('Wrong input type "' + (callback !== null ? callback.constructor.name : 'null') + '" for callback function');
throw new TypeError('Wrong input type "' + (callback !== null ? callback.constructor.name : 'null') + '" for callback function');
}
// Using the raw multi command is only possible with this function

View File

@@ -46,7 +46,6 @@ function multi_callback (self, err, replies) {
if (err) {
err.errors = self.errors;
err.command = 'EXEC';
if (self.callback) {
self.callback(err);
// Exclude connection errors so that those errors won't be emitted twice
@@ -86,7 +85,7 @@ function multi_callback (self, err, replies) {
Multi.prototype.exec_transaction = function exec_transaction (callback) {
if (this.monitoring || this._client.monitoring) {
var err = new Error(
var err = new RangeError(
'Using transaction with a client that is in monitor mode does not work due to faulty return values of Redis.'
);
err.command = 'EXEC';