//------------------------------------------------------------------------------------------------------- | |
// 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); | |
} |