以下のサンプルコードでtry ... catchが機能しないのはなぜですか?試してみてください...非同期でキャッチエラーをキャッチしないでください
const http2 = require("http2")
const url = require("url")
function sendRequest() {
return new Promise((resolve, reject) => {
var r = http2.request({
"host": "www.google.com",
"method": "GET",
"path": "/"
}, (resp) => {
var data = []
resp.on("data", (chunk) => {
throw ("Error")
})
resp.on("end",() => {
console.log("ended")
resolve("finished")
})
resp.on("error", (e) => {
console.log("error")
reject(e)
})
})
r.end()
})
}
async function wrapper(){
try {
console.log("Sending request")
await sendRequest()
console.log("Finished sending Request")
}catch(e){
console.log("error!") // Supposed to see this
console.log(e)
}
console.log("All finished") // Supposed to see this
}
wrapper()
出力は以下の通りである:
Sending request
/Users/test-user/test.js:15
throw ("Error")
^
Error
Process finished with exit code 1
で正常に動作ここでは、あなたの約束です。拒否を呼び出す代わりに、あなたがエラーを投げます。 – Keith
最初に 'data'がエラーになるのはなぜですか? –