Tuesday, June 4, 2024
145
rated 0 times [  149] [ 4]  / answers: 1 / hits: 5826  / 10 Years ago, wed, march 5, 2014, 12:00:00

We use window.onerror to catch unhandled exceptions (to log them for the dev team, and display a friendly user alert). Recently we noticed that in Google Chrome, the error message got truncated if it was above a certain length, and the text ...<omitted>... was mysteriously added to the error message.



The code below will demonstrate this (in Chrome ver 33.0.1750). I was wondering if anyone else has had this problem?



<html>
<head>
<script type=text/javascript>

window.onerror = function (errorMsg, url, lineNumber) {
alert('Error: ' + errorMsg);
}

var throwError = function () {
throw new Error(
'Something went wrong. Something went wrong. Something went wrong. Something went wrong. ' +
'Something went wrong. Something went wrong. Something went wrong. Something went wrong. ' +
'Something went wrong. Something went wrong. Something went wrong. Something went wrong. ' +
'Some text gets truncated before this point!');
}

</script>
</head>
<body>
<h1>Hello World</h1>
<input type=button onclick=throwError() value=Throw uncaught error! /><br /><br />
</body>
</html>

More From » google-chrome

 Answers
5

I found a solution that works well.



Chrome implements the new HTML standard, in which 2 new parameters have been added to the onerror handler, namely: the colNumber, and the error object (including stack trace).



See:





The full error message can be accessed through error.message as per my code sample below. This is a duplicate of the 1st parameter message, it seems like Chrome has decided to truncate message. Not sure why they had to break something that was working... :-(



IE and FireFox (as of my current versions: 11.0.9600 & 26.0) are not yet implementing the new 5-parameter standard, so the code makes allowance for that.



Hope this helps someone!



Code sample to return full error message:



<html>
<head>
<script type=text/javascript>

//Chrome passes the error object (5th param) which we must use since it now truncates the Msg (1st param).
window.onerror = function (errorMsg, url, lineNumber, columnNumber, errorObject) {
var errMsg;
//check the errorObject as IE and FF don't pass it through (yet)
if (errorObject && errorObject !== undefined) {
errMsg = errorObject.message;
}
else {
errMsg = errorMsg;
}
alert('Error: ' + errMsg);
}

var throwError = function () {
throw new Error(
'Something went wrong. Something went wrong. Something went wrong. Something went wrong. ' +
'Something went wrong. Something went wrong. Something went wrong. Something went wrong. ' +
'Something went wrong. Something went wrong. Something went wrong. Something went wrong. ' +
'Text does not get truncated! :-)');
}

</script>
</head>
<body>
<h1>Hello World</h1>
<input type=button onclick=throwError() value=Throw uncaught error! /><br /><br />
</body>



[#47151] Tuesday, March 4, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
georginat

Total Points: 656
Total Questions: 107
Total Answers: 108

Location: South Georgia
Member since Fri, Nov 13, 2020
4 Years ago
;