# 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 |
24 | goog.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 | */
34 | goog.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 | };
59 | goog.inherits(goog.debug.Error, Error);
60 |
61 |
62 | /** @override */
63 | goog.debug.Error.prototype.name = 'CustomError';