- From: Garrett Smith <dhtmlkitchen@gmail.com>
- Date: Thu, 11 Aug 2011 21:12:13 -0700
- To: public-script-coord@w3.org
This thread is a formalization of a bug-turned-discussion. https://bugs.webkit.org/show_bug.cgi?id=55092 The initial problem is that window.onerror doesn't provide a stack trace. But window.onerror is also inconsistent, has unmemorable and not so useful params. As a proposal, a global error handler with error stacks, to inspect each function and the arguments passed to it. As an example of how this would work, the program registers a global error callback: | global.addEventListener("scripterror", globalErrorHandler); | function globalErrorHandler(err) { | alert([err.callstack[0], "\n", err.message].toString()); | } When a script/DOM error occurs, the callback fires. The callback can access the callstack, message, and error from the error event. | // Cause an error to be thrown: | document.createElement("12"); This example would result in an alert with text: | "function createElement() { /* [native code] */ }" | "DOMException: line 6 of inline script. '12' is an invalid tagName". The example also assumes the following: * `useCapture` is not implementation-dependent * error events have a callstack property * Function.prototype.toString works as specified * DOM errors are real ECMAScript errors, with meaningful messages. * It always works (no swallowing chrome or DOM errors). * DOM numeric Error codes (which suck) are for legacy purposes. The many problems of Errors deserve acknowledgement. On the bright site, we're not as bad off as traffic. Drive into a parking garage and notice how many pillars have paint rubbed onto them. That is caused (generally) by a driver error. But damn, cement?! ISTM a rubber layer would prevent a lot of bodywork. -- Garrett
Received on Friday, 12 August 2011 04:12:41 UTC