gpt4 book ai didi

jquery - 为什么 jQuery 在 $.ajax 成功回调中吞掉异常?

转载 作者:行者123 更新时间:2023-12-01 04:59:12 25 4
gpt4 key购买 nike

看起来 jQuery 1.6.4 故意吞掉了 $.ajax 成功回调中的异常。

如果我这样做:

$.get('/', function() {console.log('doodoo');})

我在(Chrome)控制台中得到了这个:

Object
doodoo

但是如果我这样做,

$.get('/', function() {throw 'doodoo';})

我在控制台中没有收到错误:

Object

快速浏览一下 jQuery 源代码就会发现这显然是故意的:

try {
while( callbacks[ 0 ] ) {
callbacks.shift().apply( context, args );
}
} catch(e) { }

有人知道为什么 jQuery 会这样做吗?

最佳答案

我在这里猜测,但原因可能是因为无论如何你都无法捕获错误。由于它是一个回调,因此您无法将其包装在 try/catch 中。如果 jQuery 没有捕获它,您的应用程序就会崩溃,这很可能不是您想要的。如果您需要检查错误,请将代码包装在回调内的 try/catch 中。

try {
$.get('/', function() {throw 'doodoo';})
} catch(e) {
// this wont do anything, even if jQuery didn't catch the error
}

$.get('/', function() {
try {
throw 'doodoo';
} catch(e) {
// this is the proper way to do it
}
})

关于jquery - 为什么 jQuery 在 $.ajax 成功回调中吞掉异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11800349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com