- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
(如果重要的话,我将 Blizzard.js npm 包与 Express 结合使用。)
我正在构建一个网络应用程序,让用户可以搜索某个视频游戏的统计数据 Angular 色(玩家创建的个人资料),并且由于存在不存在的用户名,如果用户搜索没有帐户的用户名,我会尝试确保我的应用程序能够处理它。
当我查询一个不存在的用户名时,服务器函数没有看到并处理它,而是崩溃了,并在一个名为 node.js
的文件中抛出一些错误(在第 369 行,内容是 runMicrotasks();
)。我注意到我必须在我的调试器中点击“恢复”两次。但是它不会使整个服务器崩溃。在用户方面,什么也没有发生。
但是在我的服务器调用中,我通过假设字符不存在并告诉用户来确保处理任何不是 200 的东西。(我知道,懒惰。我应该只在抛出 404 时才这样做,但我还没有克服这个错误)。我的 if 语句应该捕捉到这个,但我已经在调用中和调用中设置了断点,它甚至没有达到我的断点。服务器调用永远不会触发。
调用我的服务器的代码:
$scope.searchCharacter = function(){
$scope.charName = "obviouslyInvalidCharacterName";
$scope.selectedRealm = {name: "Dalaran", id: 66};
var request = {name: $scope.charName, realm: $scope.selectedRealm};
$http.post('/searchCharacter', request)
.then(function(response) {
//request body
});
}
服务器调用:
app.post('/searchCharacter', jsonParser, function (req, res) {
blizzard.wow.character(['profile', 'stats', 'items', 'statistics'], { origin: 'us', realm: req.body.realm.name, name: req.body.name })
.then(response => {
if(response.status != 200){
res.send("That character doesn't exist! Please enter a valid character name.");
} else {
res.send(response.data);
}
});
});
错误信息:
Error:
Exception has occurred: Error
Error: Request failed with status code 404
at createError (c:\Users\RDubz\Documents\Interviews\EagleDream 12-7-17\Project\node_modules\blizzard.js\node_modules\axios\lib\core\createError.js:16:15)
at settle (c:\Users\RDubz\Documents\Interviews\EagleDream 12-7-17\Project\node_modules\blizzard.js\node_modules\axios\lib\core\settle.js:18:12)
at IncomingMessage.handleStreamEnd (c:\Users\RDubz\Documents\Interviews\EagleDream 12-7-17\Project\node_modules\blizzard.js\node_modules\axios\lib\adapters\http.js:191:11)
at emitNone (events.js:72:20)
at IncomingMessage.emit (events.js:166:7)
at endReadableNT (_stream_readable.js:921:12)
at nextTickCallbackWith2Args (node.js:442:9)
at process._tickCallback (node.js:356:17)
最佳答案
不熟悉暴雪,但您有一个潜在的未处理 promise 拒绝。在 .then()
之后执行 .catch(console.log)
以查看是否有任何拒绝抛出的异常。
可能是因为您没有注意 API 的细微差别(或者文档不完善)。
例如,在 native 获取 API 中,错误状态代码不会抛出错误/拒绝,但也许在暴雪的这个中它会抛出错误/拒绝?只是猜测,检查一下看看! :)
关于javascript - Express.js 服务器错误处理 (404)。在我什至被允许处理错误之前,服务器吓坏了并抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47785420/
我是一名优秀的程序员,十分优秀!