如何使用 XMLHttpRequest 捕获无效 URL 引发的错误

Posted

技术标签:

【中文标题】如何使用 XMLHttpRequest 捕获无效 URL 引发的错误【英文标题】:How to catch the error thrown by an invalid URL using XMLHttpRequest 【发布时间】:2017-03-13 05:47:52 【问题描述】:

我对@9​​87654323@ 中的XMLHttpRequest 对象工作不多。我是新手。我已经完成了很多 jQuery Ajax 调用,但没有对 XMLHttpRequest 对象进行过详细的处理。

我正在阅读一本书,他们提供了一些使用此对象的示例代码。

这是本书在尝试处理错误时使用的一些代码。它应该捕获由不正确的 URL 引发的错误。但我不能让它去catch clause

var httpRequest = new XMLHttpRequest();
try

     httpRequest.open("GET", "http://");
     httpRequest.send();

catch (error)

     alert("in catch clause");

我什至尝试了一个无效的 URL,但仍然不想进入 catch clause

httpRequest.open("GET", "gttp://");

是不是因为该 URL 是一个有效的 URL 才没有抛出异常?

【问题讨论】:

传递未定义变量httpRequest.open("GET", not_defined);时捕获的错误 我试过 httpRequest.open("GET", false); 它调用 OS/false 和 null 和 undefined 相同。 【参考方案1】:

var httpRequest = new XMLHttpRequest();
try

     httpRequest.open("GET", "http://",false);
     httpRequest.send();

catch (error)
	 
	
     alert("in catch clause");

默认的open 方法是异步的,不能在try/catch 块中捕获。这是因为即使在 open 方法完成之前,整个代码也会被执行。 open 方法有另一个可选参数 async,它是布尔值,默认为 true。将其设置为false 将完成工作。如果此值为 false,则在收到响应之前,send() 方法不会返回。

【讨论】:

以上是关于如何使用 XMLHttpRequest 捕获无效 URL 引发的错误的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 DOMException:无法在“XMLHttpRequest”上执行“打开”:调用第三方服务器/api 时 URL Angular HttpClient 无效?

捕获 XMLHttpRequest 跨域错误

如何使用 Newtonsoft json 捕获和处理无效的 json 异常?

如何重新发送失败的xmlHttpRequest

XMLHttpRequest 无法加载。预检响应具有无效的 HTTP 状态代码 405

XMLHttpRequest 无法加载并且预检响应具有无效的 HTTP 状态代码 405