error2json

Return a JSON representation of an error object.

Usage

var error2json = require( '@stdlib/error/to-json' );

error2json( error )

Returns a JSON representation of an error object.

var err = new Error( 'beep' );

var json = error2json( err );
/* e.g., returns
    {
        'type': 'Error',
        'name': 'Error', // if present
        'message': 'beep',
        'stack': '...' // if present
    }
*/

The JSON object is guaranteed to have the following properties:

  • type: error type.
  • message: error message.

The only standardized cross-platform property is message. Depending on the platform, the following properties may be present:

  • name: error name.
  • stack: stack trace.
  • code: error code (Node.js system errors).
  • errno: error code string (Node.js system errors).
  • syscall: string representing the failed system call (Node.js system errors).

The function also serializes all enumerable properties.

var err = new Error( 'beep' );
err.a = 'b';
err.c = { 'd': 'e' };

var json = error2json( err );
/* e.g., returns
    {
        'type': 'Error',
        'name': 'Error', // if present
        'message': 'beep',
        'stack': '...', // if present
        'a': 'b',
        'c': {
            'd': 'e'
        }
    }
*/

Notes

  • Supported built-in error types:

  • The implementation supports custom error types and sets the type field to the closest built-in error type.

    function CustomError( msg ) {
        this.name = 'CustomError';
        this.message = msg || '';
        this.stack = ( new TypeError() ).stack;
        return this;
    }
    CustomError.prototype = Object.create( TypeError.prototype );
    CustomError.prototype.constructor = CustomError;
    
    var err = new CustomError( 'boop' );
    
    var json = error2json( err );
    /* e.g., returns
        {
            'type': 'TypeError',
            'name': 'CustomError',
            'message': 'boop',
            'stack': '...'
        }
    */
    

Examples

var error2json = require( '@stdlib/error/to-json' );

var err = new Error( 'beep' );
var out = error2json( err );
/* e.g., returns
    {
        'type': 'Error',
        'name': 'Error',
        'message': 'beep',
        'stack': '...'
    }
*/

err = new TypeError( 'invalid type' );
out = error2json( err );
/* e.g., returns
    {
        'type': 'TypeError',
        'name': 'TypeError',
        'message': 'invalid type',
        'stack': '...'
    }
*/

err = new SyntaxError( 'bad syntax' );
out = error2json( err );
/* e.g., returns
    {
        'type': 'SyntaxError',
        'name': 'SyntaxError',
        'message': 'bad syntax',
        'stack': '...'
    }
*/

err = new ReferenceError( 'unknown variable' );
out = error2json( err );
/* e.g., returns
    {
        'type': 'ReferenceError',
        'name': 'ReferenceError',
        'message': 'unknown variable',
        'stack': '...'
    }
*/

err = new URIError( 'bad URI' );
out = error2json( err );
/* e.g., returns
    {
        'type': 'URIError',
        'name': 'URIError',
        'message': 'bad URI',
        'stack': '...'
    }
*/

err = new RangeError( 'value out-of-range' );
out = error2json( err );
/* e.g., returns
    {
        'type': 'RangeError',
        'name': 'RangeError',
        'message': 'value out-of-range',
        'stack': '...'
    }
*/

err = new EvalError( 'eval error' );
out = error2json( err );
/* e.g., returns
    {
        'type': 'EvalError',
        'name': 'EvalError',
        'message': 'eval error',
        'stack': '...'
    }
*/
Did you find this page helpful?