| //------------------------------------------------------------------------------------------------------- |
| // Copyright (C) Microsoft. All rights reserved. |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. |
| //------------------------------------------------------------------------------------------------------- |
| |
| function showProperty(x, y) |
| { |
| var value = y[x]; |
| if (x === "stack") { |
| value = value && value.replace(/\(.+\\test.Error./ig, "("); |
| } |
| WScript.Echo(" " + x + "\t isOwn = " + y.hasOwnProperty(x) + "\t value = " + value); |
| } |
| |
| function test(y) |
| { |
| WScript.Echo(" ToString = "+y); |
| WScript.Echo(" Properties = "); |
| showProperty("name", y); |
| showProperty("message", y); |
| showProperty("stack", y); // Explicitly adding the known non-enumerable members |
| showProperty("number", y); |
| showProperty("description", y); |
| for (x in y) |
| { |
| showProperty(x, y); |
| } |
| } |
| |
| function safeCall(f) { |
| var args = []; |
| for (var a = 1; a < arguments.length; ++a) |
| args.push(arguments[a]); |
| try { |
| return f.apply(this, args); |
| } catch (ex) { |
| WScript.Echo(ex.name + ": " + ex.message); |
| } |
| } |
| |
| WScript.Echo("Error.prototype"); |
| test(Error.prototype); |
| |
| WScript.Echo("RangeError.prototype"); |
| test(RangeError.prototype); |
| |
| safeCall(function () { |
| WScript.Echo("ConversionError.prototype"); |
| test(ConversionError.prototype); |
| }); |
| |
| WScript.Echo("\nError"); |
| test(Error) ; |
| |
| err = new Error(); |
| WScript.Echo("\nnew Error()"); |
| test(err); |
| |
| err = new Error(undefined); |
| WScript.Echo("\nnew Error(undefined)"); |
| test(err); |
| |
| err = new Error(null); |
| WScript.Echo("\nnew Error(null)"); |
| test(err); |
| |
| err = new Error("Hello"); |
| WScript.Echo("\nnew Error(\"Hello\")"); |
| test(err); |
| |
| err = new Error(100, "With a number"); |
| WScript.Echo("\nnew Error(100, \"With a number\")"); |
| test(err) ; |
| |
| err = new Error("Hello"); |
| err.name = undefined; |
| WScript.Echo("\nnew Error(\"Hello\"); name=undefined"); |
| test(err); |
| |
| err = new ReferenceError("I'm a reference error"); |
| WScript.Echo("\nnew ReferenceError(\"I'm a reference error\")"); |
| test(err); |
| |
| safeCall(function () { |
| err = new RegExpError(22, "This is a RegExp error"); |
| WScript.Echo("\nnew RegExpError(22, \"This is a RegExp error\")"); |
| test(err); |
| }); |
| |
| err = new TypeError(); |
| WScript.Echo("\nnew TypeError()"); |
| test(err); |
| |
| err = new TypeError(undefined); |
| WScript.Echo("\nnew TypeError(undefined)"); |
| test(err); |
| |
| err = new TypeError(null); |
| WScript.Echo("\nnew TypeError(null)"); |
| test(err); |
| |
| var undef; |
| err = new TypeError("With a undef name"); |
| err.name = undef; |
| WScript.Echo("\nnew TypeError(\"With a undef name\")"); |
| test(err); |
| |
| WScript.Echo("\nRuntime TypeError()"); |
| try |
| { |
| blah = boo; |
| } catch(err) |
| { |
| test(err); |
| } |