Closed Bug 67645 Opened 24 years ago Closed 24 years ago

[RFE] Need column number in JS error handler

Categories

(Core :: DOM: Core & HTML, enhancement)

x86
All
enhancement
Not set
normal

Tracking

()

VERIFIED DUPLICATE of bug 52120

People

(Reporter: bht237, Assigned: jst)

Details

(Keywords: dom0)

It would be logical being able to access _programmaticallly_ the information that is available to every end user with a few mouse clicks. Since Netscape 3, the column number of a script error has been availabe by means of "...............^" in the error dialog box, and in MS IE directly as a number. JavaScript is really easy-going as far as additional function parameters are concerned, so we should be able to write: function customErrorHandler(errorString,url,lineNumber,_columnNumber_){ //error handling code return true; }//End of function - without any backwards compatibility problems. The commercial background of this request is the need for a browser as a dependable application platform for closed-loop process type of systems where excellent error handling is a non-negociable requirement. This is a critical requirement for mission-critical systems and not just a nice-to have feature. More background information: 1) One cannot force a programmer to NOT write multiple statements on a single line simply because the language supports it and provides no means to prevent it. 2) Network bandwidth and cost constraints are strong logical forces towards script compression where whole scripts with hundreds of statements are on a single line. Please see view-source:www.msn.com as an example.
Actually, looks like a fix with this functionality was just attached to bug 67647. hewitt, would this just be a dup?
I'm marking this WORKSFORME because there has long been an API in mozilla for programmatically accessing the error information that the reporter is asking for. See the interfaces nsIConsoleService and nsIScriptError.
Status: UNCONFIRMED → RESOLVED
Closed: 24 years ago
Resolution: --- → WORKSFORME
Marking Verified -
Status: RESOLVED → VERIFIED
nsIConsoleService and nsIScriptError: This doesn't look like JavaScript to me. Or is there a bridge to JavaScript for this so I call it (Mozilla specific code) in a window.onerror handler?
Status: VERIFIED → UNCONFIRMED
Resolution: WORKSFORME → ---
Joe, any comment on bht@actrix.gen.nz 's question above? cc'ing jband in case he has any advice here -
A few points: - This is not a JS engine bug. window.onerror is a DOM feature and has nothing directly to do with the JS engine. - I discovered that window.onerror is broken anyway and a known bug. I just sent off mail to try to shame the owner into fixing it. See bug 52120. - The JS engine does not have column info on runtime errors - only on compile-time errors (generally syntax errors). A compile-time error would not be catchable in the same script (since it is not runnable when its own compilation fails) but ought to be catachable from a previously compiled script. I notice that both 4.x and mozilla do send the event for compile-time errors. Still, it seems to me that the vast majority of cases where you would want to catch an error with onerror would be runtime errors - e.g. object has no property with that name, etc. I think that programatically catching compile-time errors in an onerror handler is a pretty marginal activity. Anyway, I'm reassigning to the DOM owner to let him resolve this bug as he chooses.
Assignee: rogerl → jst
Component: Javascript Engine → DOM Level 0
Thanks John for your valuable comments. I basically agree, however John's comments have created a few more thoughts: The nature of errors is usually such that very few pople can predict where and when they occur. Good examples are: Microsoft's Internet Explorer 5 fires a frameset onLoad event exactly when the transfer of frame documents is interrupted and the corresponding local error pages are loaded into the frame(s). Netscape Communicator 4 keeps "Transfer interrupted" documents in the cache, which creates an unrecoverable error condition. In both of the above cases, compile time errors do occur and catching them has a very high value. Being able to have column numbers here would certainy have benefits that would raise the quality of the Mozila browser to a more competitive level. I have my own personal example to back up the statement above: I am using the Netscape script debugger applet jsDebug. Apart from some nuisance factors, it is incredibly useful for me partly because of an accident: It does catch racing-condition-like runtime errors where I know that users had them but I was never able to reproduce them normally with any of my computers. And I am sure that when the debugger was written that the designers did not plan for this feature. It is just plain coincidence! From all that I conclude that every visible chance to utilise error handling should be exploited to the fullest extent. The lifetime of a browser is not that long, and with later generations and competing products, other unforseen problems will be added. Examples for this are the try{}catch{} statement and Mozilla's strict mode. One cannot use these yet in the heterogenous environment that exists today. IMHO, part of the key to Mozilla's success as a commercial application platform is in the combination of the small components that make it more robust and dependable than competing products. Better standards compliance in rendering web pages is certainly a huge goal but please consider the developers who have to work through the weekends because of hard-to-find program errors.
Keywords: dom0
Going to make this a [RFE] I believe its a very good idea for us developers. Marking NEW. Feel free to banter about until someone reassigns to nobody@mozilla.org :)
Severity: critical → enhancement
Status: UNCONFIRMED → NEW
Ever confirmed: true
OS: other → All
Summary: Need column number in JS error handler → [RFE] Need column number in JS error handler
*** This bug has been marked as a duplicate of 52120 ***
Status: NEW → RESOLVED
Closed: 24 years ago24 years ago
Resolution: --- → DUPLICATE
Verified Duplicate -
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.