I've been spending some time lately studying JavaScript's Error object. These are some of my notes on Error object compatibility across browsers, in case anyone else finds this useful.
Property | Google Chrome | Safari | Opera | Firefox | MSIE |
---|---|---|---|---|---|
name | Yes | Yes | Yes | Yes | Yes |
message | Yes | Yes | Yes | Yes | Yes |
stack | Yes | Yes | Yes | Yes | Yes (IE10+) |
toString() | Yes | Yes | Yes | Yes | Yes |
type | Yes | No | No | No | No |
columnNumber | No | No | No | Yes | No |
fileName | No | No | No | Yes | No |
sourceURL | No | Yes | No | No | No |
line | No | Yes | No | No | No |
lineNumber | No | No | No | Yes | No |
number | No | No | No | No | Yes |
Notes:
- Though file name is available in the
.stack
property, only Firefox and Safari provide this as an explicit property, and that too with different property names (FF:.fileName
, Safari:.sourceURL
). - All browsers string-format the stack subtly differently. There's no standard regarding stack formatting. Firefox has the least informative stack property. I'm going to cut Firefox some slack though, since they were the first to expose this property. That said, this might change in the future. Worth keeping an eye on this discussion.
- Firefox doesn't provide column numbers in the stack at all. However, it does provide a
.columnNumber
property which is only useful for the first stack frame. - The
.number
property (IE) is practically useless. It points to IE's internal representation of errors. .line
(Safari) and.lineNumber
(Firefox) properties give the line number of the first stack frame of the error. No one else provides a similar property, though this data is available in the.stack
everywhere except Firefox.- The
.toString()
formatting seems consistent, and similar to the formatting of the error message inwindow.onerror
. That is, it uses the formatname + ": " + message
. The only exception to this, of course, is thatwindow.onerror
formats errors differently when the source file has x-domain restrictions. - Column numbers in the
.stack
property are only available in IE10+ and Chrome. Opera provides a.stacktrace
property in addition to.stack
that has column numbers (go figure!). No other browser provides column numbers in the stack trace. As mentioned above, Firefox does provide an explicit.columnNumber
property that's only useful for the first stack frame. - No stack support for IE<10. Nothing. Zilch.