【发布时间】:2014-05-26 15:09:14
【问题描述】:
使用简单的request.js http client 我注意到有时简单的TypeError 会导致整个节点应用程序崩溃。举一个例子:
request('http://www.google.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // Print the google web page.
}
})
现在,假设 Google 没有响应并且连接挂起然后超时的假设情况(在 Google 的情况下!)。此代码只是使节点应用程序崩溃,因为response 未定义,因此无法读取response.statusCode。这会冒泡到事件循环并触发崩溃并出现错误:
TypeError: Cannot read property 'statusCode' of undefined
防止这种情况发生的最简单方法是什么?我可以在检查 statusCode 之前添加检查 error 的值,例如:
request('http://www.google.com', function (error, response, body) {
if (!error) {
if (response.statusCode == 200) {
// do stuff
}
}
})
但如果可能的话,我宁愿不要在应用程序中添加不必要的行。我可能在这里遗漏了一些明显的东西!任何指针都非常感谢。谢谢。
【问题讨论】:
标签: javascript node.js error-handling request