You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何捕获Oak框架中listen方法抛出的错误?

在Oak框架中正确捕获listen错误的方法

问题出在app.listen是异步方法,它返回一个Promise,你当前的同步try/catch无法捕获异步Promise的拒绝错误,所以才会被Deno的全局错误处理先捕获。

解决方式有两种:

1. 使用async/await配合try/catch

把代码放在async函数里,用await等待app.listen完成,这样就能在try/catch里捕获错误:

async function startServer() {
  try {
    await app.listen({ port: 3000 });
    logger.info('Listening...');
  } catch (e) {
    handleTheError(e);
    // 可在此执行日志记录、资源清理等操作
  }
}

startServer();

2. 使用Promise的.catch()方法

直接链式调用app.listen的catch方法处理错误:

app.listen({ port: 3000 })
  .then(() => {
    logger.info('Listening...');
  })
  .catch((e) => {
    handleTheError(e);
  });

两种方式都能正确捕获端口占用、权限不足等启动阶段的错误,不会被Deno全局错误处理抢先捕获。

内容的提问来源于stack exchange,提问作者Hayden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:22:01