73 lines
1.7 KiB
JavaScript
Executable File
73 lines
1.7 KiB
JavaScript
Executable File
/**
|
|
* @license
|
|
* Copyright The Closure Library Authors.
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @fileoverview Provides a base class for custom Error objects such that the
|
|
* stack is correctly maintained.
|
|
*
|
|
* You should never need to throw DebugError(msg) directly, Error(msg) is
|
|
* sufficient.
|
|
*/
|
|
|
|
goog.module('goog.debug.Error');
|
|
goog.module.declareLegacyNamespace();
|
|
|
|
|
|
|
|
/**
|
|
* Base class for custom error objects.
|
|
* @param {*=} msg The message associated with the error.
|
|
* @param {{
|
|
* message: (?|undefined),
|
|
* name: (?|undefined),
|
|
* lineNumber: (?|undefined),
|
|
* fileName: (?|undefined),
|
|
* stack: (?|undefined),
|
|
* cause: (?|undefined),
|
|
* }=} cause The original error object to chain with.
|
|
* @constructor
|
|
* @extends {Error}
|
|
*/
|
|
function DebugError(msg = undefined, cause = undefined) {
|
|
// Attempt to ensure there is a stack trace.
|
|
if (Error.captureStackTrace) {
|
|
Error.captureStackTrace(this, DebugError);
|
|
} else {
|
|
const stack = new Error().stack;
|
|
if (stack) {
|
|
/** @override */
|
|
this.stack = stack;
|
|
}
|
|
}
|
|
|
|
if (msg) {
|
|
/** @override */
|
|
this.message = String(msg);
|
|
}
|
|
|
|
if (cause !== undefined) {
|
|
/** @type {?} */
|
|
this.cause = cause;
|
|
}
|
|
|
|
/**
|
|
* Whether to report this error to the server. Setting this to false will
|
|
* cause the error reporter to not report the error back to the server,
|
|
* which can be useful if the client knows that the error has already been
|
|
* logged on the server.
|
|
* @type {boolean}
|
|
*/
|
|
this.reportErrorToServer = true;
|
|
}
|
|
goog.inherits(DebugError, Error);
|
|
|
|
|
|
/** @override @type {string} */
|
|
DebugError.prototype.name = 'CustomError';
|
|
|
|
|
|
exports = DebugError;
|