IE6 Try / Catch块不适用于自定义document.someFunction调用

时间:2011-09-18 02:47:10

标签: javascript try-catch document internet-explorer-6

如何在IE6中将函数附加到全局文档对象,并且仍然能够捕获在调用时从该函数抛出的异常?

令人惊讶的是,异常不会在IE6中的函数外传播,如下例所示:

// Declare function on document
document.someFn = function()
{
    throw new Error('Raised error');
}

// IE6: bug??
try{
    document.someFn('some parameter');
    alert('2. error has not been raised: bad!');
}
catch(err) {
}

您可以在此处试用示例和一些额外的测试用例:

http://www.pokret.org/stuff/ie6-bug-test.html

任何解决方法的想法?

2 个答案:

答案 0 :(得分:2)

我知道这是一个古老的问题,但万一有人在我遇到同样的问题后出现,我发现这似乎有效:

// Declare function on document
document.someFn = function() {
  throw new Error('Raised error');
}

try {
  document.someFn.apply(null, 'some parameter');
  alert('2. error has not been raised: bad!');
}
catch(err) {
}

答案 1 :(得分:-1)

function someFn ( txt ) {
    throw new Error( 'Raised error: ' + txt );
}

try {
    someFn( 'im dead' );
    alert( 'im alive' ); // will not be shown
} catch(err) {
    if( 'description' in err ) {
        alert( err.description ); // IE
    } else {
        alert( err ); // other browsers
    }

}

关于IE中try...catch的MSDN文章。