JS记录错误日志/捕捉错误
//onerror提供异常信息,文件路径和发生错误代码的行数的三个参数。
window.onerror = function(e,url,index){ var msg = e.message || e|| "未知错误"; alert("错误信息:"+msg+",错误路径:"+ul+",行数:"+index); }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
var
logger = ( function (){
var
log = function (err){
var
img = new
Image(0,0);
var
_url =[];
_url.push( ‘name‘ + ‘=‘ +encodeURIComponent(err.name));
_url.push( ‘message‘ + ‘=‘ +encodeURIComponent(err.message));
_url.push( ‘location‘ + ‘=‘ +encodeURIComponent(err.location));
if (err.line)
_url.push( ‘line‘ + ‘=‘ +encodeURIComponent(err.line));
if (err.func)
_url.push( ‘func‘ + ‘=‘ +encodeURIComponent(err.func));
var
url = _url.join( ‘&‘ );
img.src = loghost+url;
console.log(img.src);
}
return
{log:log};
})(); function
trapError(msg, URI, ln) {
// wrap our unknown error condition in an object
var
error = new
Error(msg);
error.location = URI; // add custom property
error.line = ln;
logger.log(error);
warnUser();
return
true ; // stop the yellow triangle
} window.onerror = trapError; function
foo() {
try
{
riskyOperation();
} catch
(err) {
// add custom property
err.location = location.href;
err.func = ‘foo‘ ;
logger.log(err);
warnUser();
}
} function
warnUser() {
alert( "An error has occurred while processing this page.\
Our engineers have been alerted!" );
// do something
} foo(); |