如何在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
任何解决方法的想法?
答案 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文章。