redis-errors
Advanced tools
+15
-1
@@ -41,6 +41,20 @@ 'use strict' | ||
| class AbortError extends RedisError { | ||
| get name () { | ||
| return this.constructor.name | ||
| } | ||
| } | ||
| class InterruptError extends AbortError { | ||
| get name () { | ||
| return this.constructor.name | ||
| } | ||
| } | ||
| module.exports = { | ||
| RedisError, | ||
| ParserError, | ||
| ReplyError | ||
| ReplyError, | ||
| AbortError, | ||
| InterruptError | ||
| } |
+1
-2
| { | ||
| "name": "redis-errors", | ||
| "version": "1.0.0", | ||
| "version": "1.1.0", | ||
| "description": "Error classes used in node_redis", | ||
@@ -27,3 +27,2 @@ "main": "index.js", | ||
| "devDependencies": { | ||
| "buffer-from": "^0.1.1", | ||
| "istanbul": "^0.4.0", | ||
@@ -30,0 +29,0 @@ "mocha": "^3.1.2", |
+85
-9
@@ -1,2 +0,1 @@ | ||
| [](https://travis-ci.org/NodeRedis/redis-errors) | ||
| [](http://standardjs.com/) | ||
@@ -6,3 +5,4 @@ | ||
| All error classes used in [node_redis](https://github.com/NodeRedis/node_redis) from v.3.0.0 are in here. They can be required as needed. | ||
| All error classes used in [node_redis](https://github.com/NodeRedis/node_redis) | ||
| from v.3.0.0 are in here. They can be required as needed. | ||
@@ -18,13 +18,25 @@ ## Install | ||
| ```js | ||
| const { RedisError, ReplyError } = require('redis-errors'); | ||
| const { ReplyError, InterruptError } = require('redis-errors'); | ||
| // Using async await | ||
| try { | ||
| return client.set('foo') // Missing value | ||
| await client.set('foo') // Missing value | ||
| } catch (err) { | ||
| if (err instanceof InterruptError) { | ||
| console.error('Command might have been processed') | ||
| } | ||
| if (err instanceof ReplyError) { | ||
| console.log(err) | ||
| // ... | ||
| } | ||
| throw err | ||
| } | ||
| // Using callbacks | ||
| client.set('foo', (err, res) => { | ||
| if (err) { | ||
| if (err instanceof InterruptError) { | ||
| // ... | ||
| } | ||
| } | ||
| }) | ||
| ``` | ||
@@ -34,10 +46,74 @@ | ||
| * `RedisError` sub class of Error | ||
| * `ReplyError` sub class of RedisError | ||
| * `ParserError` sub class of RedisError | ||
| All errors returned by NodeRedis use own Error classes. You can distinguish | ||
| different errors easily by checking for these classes. | ||
| All Redis errors will be returned as `ReplyErrors` while a parser error is returned as `ParserError`. | ||
| To know what caused the error they might contain properties to know in more | ||
| detail what happened. | ||
| Each error contains a `message`, a `name` and a `stack` property. Please be aware | ||
| that the stack might not be useful due to the async nature and is in those cases | ||
| therefore limited to two frames. | ||
| There might be more not yet documented properties as well. Please feel free to | ||
| open a pull request to document those as well. | ||
| #### RedisError | ||
| `Properties`: | ||
| Properties depend on the individual error. | ||
| All errors returned by NodeRedis (client) are `RedisError`s. | ||
| Subclass of `Error` | ||
| #### ReplyError | ||
| `Properties`: | ||
| * `args`: The arguments passed to the command. | ||
| * `command`: The command name. | ||
| * `code`: The `Redis` error code. Redis itself uses some internal error codes. | ||
| All errors returned by Redis itself (server) will be a `ReplyError`. | ||
| Subclass of `RedisError` | ||
| #### ParserError | ||
| `Properties`: | ||
| * `buffer`: The raw buffer input stringified. | ||
| * `offset`: The character count where the parsing error occurred. | ||
| Parsing errors are returned as `ParserError`. | ||
| Subclass of `RedisError` | ||
| **Note:** If you encounter one of these please report that error including the | ||
| attached `offset` and `buffer` properties! | ||
| #### AbortError | ||
| `Properties`: | ||
| * `args`: The arguments passed to the command. | ||
| * `command`: The command name. | ||
| If a command was not yet executed but rejected, it'll return a `AbortError`. | ||
| Subclass of `RedisError` | ||
| #### InterruptError | ||
| `Properties`: | ||
| * `args`: The arguments passed to the command. | ||
| * `command`: The command name. | ||
| * `origin`: The original error that caused the interrupt | ||
| All executed commands that could not fulfill (e.g. network drop while | ||
| executing) return a `InterruptError`. | ||
| Subclass of `AbortError` | ||
| **Note:** Interrupt errors can happen for multiple reasons that are out of the | ||
| scope of NodeRedis itself. There is nothing that can be done on library side | ||
| to prevent those. | ||
| ## License | ||
| [MIT](./LICENSE) |
6342
50.25%3
-25%52
30%117
185.37%