【发布时间】:2018-12-09 09:52:32
【问题描述】:
调用http.get(url, cb)时可以创建4个错误场景:
httpThrows()
可以用错误的url格式,或者错误的回调等触发。
function httpThrows() {
try {
http.get("www.missing-protocol.com", res => {
console.log(res.statusCode);
});
} catch (error) {
console.log("http.get() throws an error.");
}
}
requestError()
它是主要的错误处理程序,并在某些网络相关问题上触发,例如DNS 查找失败或服务器无响应等
function requestError() {
var req = http.get("http://some-url-that-does-not-exist.com", res => {
console.log(res.statusCode);
});
req.on("error", err => {
console.log("req.on('error') called with error");
});
}
errorCode()
服务器响应正常,因此没有网络错误(可以处理服务器错误)。
function errorCode() {
http.get("http://httpstat.us/501", res => {
console.log("Got error code:", res.statusCode);
});
}
responseError()(问题)
http.IncomingMessage 在回调中作为response 或res 给出。根据documentation,它是Readable steam,并且该蒸汽可以发出error 事件。
function responseError() {
http.get("http://some-ulr-with-error-halfway-through.com/", res => {
console.log(res.statusCode);
// This will never be emitted?
res.on("error", err => {
console.log("res.on('error') called with error", err);
});
});
}
所以最后一个处理程序:
- 使用
http.request或http.get时是否触发过此事件? - 如果是这样,什么可以触发事件?
【问题讨论】:
标签: javascript node.js error-handling