UNPKG

hsd

Version:
59 lines (48 loc) 1.28 kB
/*! * scripterror.js - script error for hsd * Copyright (c) 2017-2018, Christopher Jeffrey (MIT License). * https://github.com/handshake-org/hsd */ 'use strict'; /** @typedef {import('./opcode')} Opcode */ /** * Script Error * An error thrown from the scripting system, * potentially pertaining to Script execution. * @alias module:script.ScriptError * @extends Error * @property {String} message - Error message. * @property {String} code - Original code passed in. * @property {Number} op - Opcode. * @property {Number} ip - Instruction pointer. */ class ScriptError extends Error { /** * Create an error. * @constructor * @param {String} code - Error code. * @param {Opcode|String} [op] - Opcode. * @param {Number?} [ip] - Instruction pointer. */ constructor(code, op, ip) { super(); this.type = 'ScriptError'; this.code = code; this.message = code; this.op = -1; this.ip = -1; if (typeof op === 'string') { this.message = op; } else if (op) { this.message = `${code} (op=${op.toSymbol()}, ip=${ip})`; this.op = op.value; this.ip = ip; } if (Error.captureStackTrace) Error.captureStackTrace(this, ScriptError); } } /* * Expose */ module.exports = ScriptError;