toJSON

Return a JSON representation of an error object.

Usage

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

toJSON( error )

Returns a JSON representation of an error object.

var err = new Error( 'beep' );

var json = toJSON( err );
/* 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 = toJSON( err );
/* 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 = toJSON( err );
    /*
        {
            "type": "TypeError",
            "name": "CustomError",
            "message": "boop",
            "stack": "..."
        }
    */
    

Examples

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

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

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

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

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

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

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

err = new EvalError( 'eval error' );
out = toJSON( err );
/* returns
    {
        "type": "EvalError",
        "name": "EvalError",
        "message": "eval error",
        "stack": "..."
    }
*/