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 at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// 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 and
13// limitations under the License.
14
15/**
16 * @fileoverview Provides a base class for custom Error objects such that the
17 * stack is correctly maintained.
18 *
19 * You should never need to throw goog.debug.Error(msg) directly, Error(msg) is
20 * sufficient.
21 *
22 */
23
24goog.provide('goog.debug.Error');
25
26
27
28/**
29 * Base class for custom error objects.
30 * @param {*=} opt_msg The message associated with the error.
31 * @constructor
32 * @extends {Error}
33 */
34goog.debug.Error = function(opt_msg) {
35
36 // 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 }
45
46 if (opt_msg) {
47 this.message = String(opt_msg);
48 }
49
50 /**
51 * Whether to report this error to the server. Setting this to false will
52 * cause the error reporter to not report the error back to the server,
53 * which can be useful if the client knows that the error has already been
54 * logged on the server.
55 * @type {boolean}
56 */
57 this.reportErrorToServer = true;
58};
59goog.inherits(goog.debug.Error, Error);
60
61
62/** @override */
63goog.debug.Error.prototype.name = 'CustomError';