133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// Copyright 2009 The Closure Library Authors. All Rights Reserved. 233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// 333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// Licensed under the Apache License, Version 2.0 (the "License"); 433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// you may not use this file except in compliance with the License. 533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// You may obtain a copy of the License at 633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// 733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// http://www.apache.org/licenses/LICENSE-2.0 833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// 933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// Unless required by applicable law or agreed to in writing, software 1033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// distributed under the License is distributed on an "AS-IS" BASIS, 1133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// See the License for the specific language governing permissions and 1333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// limitations under the License. 1433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 1533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org/** 1633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org * @fileoverview Provides a base class for custom Error objects such that the 1733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org * stack is correctly maintained. 1833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org * 1933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org * You should never need to throw goog.debug.Error(msg) directly, Error(msg) is 2033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org * sufficient. 2133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org * 2233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org */ 2333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 2433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.orggoog.provide('goog.debug.Error'); 2533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 2633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 2733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 2833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org/** 2933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org * Base class for custom error objects. 3033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org * @param {*=} opt_msg The message associated with the error. 3133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org * @constructor 3233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org * @extends {Error} 3333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org */ 3433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.orggoog.debug.Error = function(opt_msg) { 3533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 3633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org // Attempt to ensure there is a stack trace. 3733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org if (Error.captureStackTrace) { 3833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org Error.captureStackTrace(this, goog.debug.Error); 3933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org } else { 4033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org var stack = new Error().stack; 41d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org if (stack) { 4233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org this.stack = stack; 4333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org } 4433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org } 4533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 4633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org if (opt_msg) { 4733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org this.message = String(opt_msg); 4833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org } 4933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org}; 5033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.orggoog.inherits(goog.debug.Error, Error); 5133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 5233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 5333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org/** @override */ 5433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.orggoog.debug.Error.prototype.name = 'CustomError'; 5533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org