我正在尝试测试 https 连接。 “try”正在执行,但“catch”没有缓存错误并根据需要执行代码。
我正在使用node.js
var https = require("https");
try {
https.get({host:'nonsecuredomain.com'}, function(res){});
}
catch(err) {
console.log('maybe an ssl error');
}
事件.js:167 扔呃;//未处理的“错误”事件 ^
Error: certificate has expired
at TLSSocket.onConnectSecure (_tls_wrap.js:1049:34)
at TLSSocket.emit (events.js:182:13)
at TLSSocket._finishInit (_tls_wrap.js:631:8)
Emitted 'error' event at:
at TLSSocket.socketErrorListener (_http_client.js:392:9)
at TLSSocket.emit (events.js:182:13)
at emitErrorNT (internal/streams/destroy.js:82:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
最佳答案
https.get
是异步的。这意味着当网络返回结果或错误时,带有 try
catch
的函数已经返回。
get
返回一个对象,该对象将在出现错误时发出事件。您应该监听该“错误”事件并处理异步引发的错误:
https.get(url, (res) => {
res.on('data', (d) => {
// do stuff
});
}).on('error', (e) => {
console.error(e); // deal with errors
});
关于javascript - Try 正在执行,但 catch 没有缓存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54047460/