gpt4 book ai didi

node.js - 如何在事件监听器中捕获异常?

转载 作者:搜寻专家 更新时间:2023-10-31 22:35:49 30 4
gpt4 key购买 nike

我使用 Puppeteer 库打开一个 URL 并处理所有请求的响应。有时在事件监听器 page.on('response') 中,我需要抛出一个错误,如下例所示。但是我无法以任何方式捕获这些异常,我总是遇到 unhandled promise rejection 错误。我该如何处理这些异常?我不想使用 process.on('unhandledRejection') 因为它根本不能解决我的问题。

const puppeteer = require('puppeteer');

(async () => {
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();

page.on('response', (request) => {
throw 'response error';
});

await page.goto('http://google.com/');

browser.close();
} catch (e) {}
})();

最佳答案

尽管您的 page.on 处理函数位于 try..catch block 内,但该函数是异步执行的,因此在该函数内抛出的任何错误都是未被外部 try..catch block 捕获。

你必须在你的函数中创建另一个 try..catch block 。

示例

const puppeteer = require('puppeteer');

function handleError(err) {
// ...
}

(async () => {
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();

page.on('response', (request) => {
try { // inner try catch block to catch errors inside this function
// ...
throw 'response error';
} catch (err) {
// Handle the error here, or pass it to another function:
handleError(err);
}
});

await page.goto('http://google.com/');

browser.close();
} catch (e) {}
})();

关于node.js - 如何在事件监听器中捕获异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46279271/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com