# lib/goog/debug/error.js

    1// Copyright 2009 The Closure Library Authors. All Rights Reserved.2//3// Licensed under the Apache License, Version 2.0 (the "License");4// you may not use this file except in compliance with the License.5// You may obtain a copy of the License at6//7//      http://www.apache.org/licenses/LICENSE-2.08//9// Unless required by applicable law or agreed to in writing, software10// distributed under the License is distributed on an "AS-IS" BASIS,11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.12// See the License for the specific language governing permissions and13// limitations under the License.1415/**16 * @fileoverview Provides a base class for custom Error objects such that the17 * stack is correctly maintained.18 *19 * You should never need to throw goog.debug.Error(msg) directly, Error(msg) is20 * sufficient.21 *22 */2324goog.provide('goog.debug.Error');25262728/**29 * Base class for custom error objects.30 * @param {*=} opt_msg The message associated with the error.31 * @constructor32 * @extends {Error}33 */34goog.debug.Error = function(opt_msg) {3536  // Attempt to ensure there is a stack trace.37  if (Error.captureStackTrace) {38    Error.captureStackTrace(this, goog.debug.Error);39  } else {40    var stack = new Error().stack;41    if (stack) {42      this.stack = stack;43    }44  }4546  if (opt_msg) {47    this.message = String(opt_msg);48  }49};50goog.inherits(goog.debug.Error, Error);515253/** @override */54goog.debug.Error.prototype.name = 'CustomError';