我是一名新的程序员,主要背景是Java。我试图用Javascript中的程序编写故障处理,就像在Java中一样。在java中,我使用Apache HTTP客户端来创建客户端并调用Httpget请求。
HttpClient cli = new DefaultHttpClient();
cli.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);
HttpResponse resp = null;
for (int i = 0 ; i < 5 ; i++) {
try {
resp = cli.execute(new HttpGet("http://example.org/products"));
}
catch{//code}
}
我不确定如何在javascript环境中模拟此行为。有没有人对这个领域有洞察力或知识?
答案 0 :(得分:1)
在javascript中,与其他一些语言一样,“异常”处理主要由错误检查取代。例如,您将在发出请求时检查xmlhttprequest对象的状态:
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState === 4) {
if (httpRequest.status === 200) {
// ok, no "exception"
} else {
// BOOM ! "exception"
}
}
}
}
例外仅在少数几个地方有用,例如parseInt。
但我不确定一个沉重的“容错”javascript代码是否很有意义:
您的全球系统必须认为浏览器是外国域名:进入您的服务器的任何内容都不可信任。
答案 1 :(得分:0)
以下是您的代码段的完全等效内容,但在JavaScript中!
var cli;
var callback = function(resp) {
// due to the asynchronous nature of XMLHttpRequest, you'll need to put all logic that uses the response in a callback function.
// code below using responseText
console.log(resp);
};
var timeout = 5000;
var handler = function() {
var errorSeries;
if (this.readyState === 4) { // indicates complete
errorSeries = parseInt(this.status.toString().charAt(0)); // will be "2" or "3" for 200 or 300 series responses
if (errorSeries === 2 || errorSeries === 3) {
callback.call(this, this.responseText);
} else {
// handle http error here
}
}
}
for (var i = 0 ; i < 5 ; i++) {
cli = new XMLHttpRequest(); // ActiveXObject('Microsoft.XMLHTTP') in IE8 and below
cli.timeout = timeout;
cli.onreadystatechange = handler;
try {
cli.open('GET','http://example.org/products');
cli.send();
}
catch(e) {
}
如果上面看起来很罗嗦,那是因为它是。其他评论者指引你正确:使用像jQuery这样的库来抽象出这种样板。