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

Prisma忽略try/catch语句致服务崩溃,求解决方案

Prisma查询忽略try/catch的解决建议

以下是针对Prisma查询无法被try/catch捕获的排查和解决步骤:

  • 确保外层函数是async函数
    只有async函数内的await语句才能让try/catch捕获异步错误,如果包含这段查询的函数没有声明为async,await会失效,错误无法被捕获。示例:

    // 正确写法:外层函数必须加async
    async function getTableData() {
      try {
        await prisma.table.findMany({});
      } catch (error) {
        console.error('捕获到查询错误:', error);
        await LogService.crearErrorLog(error);
        throw ClassToSendAnErrorWithPersonalization.internalServer('Some message');
      }
    }
    
  • 先排查错误是否真的未被捕获
    在catch块中添加控制台打印,确认错误是否进入了catch逻辑——有可能是LogService.crearErrorLog或自定义错误类的问题,导致你误以为try/catch被忽略:

    try {
      await prisma.table.findMany({});
    } catch (error) {
      // 先打印错误,验证是否进入catch
      console.error('进入catch块,错误信息:', error);
      await LogService.crearErrorLog(error);
      throw ClassToSendAnErrorWithPersonalization.internalServer('Some message');
    }
    
  • 检查Prisma客户端连接状态
    若数据库连接本身存在问题,可能导致错误抛出逻辑异常。可以先手动测试连接:

    try {
      // 先验证连接是否正常
      await prisma.$connect();
      const data = await prisma.table.findMany({});
    } catch (error) {
      console.error('连接或查询错误:', error);
    }
    
  • 排查全局错误拦截机制
    检查项目中是否存在全局的Promise错误处理器(如process.on('unhandledRejection'))或框架级别的错误捕获(如Express的错误中间件),这些机制可能会吃掉错误,导致你看不到catch块的执行效果。

  • 规范.catch回调的错误抛出
    如果你使用Promise链式调用的.catch,注意async回调中抛出的错误需要上层try/catch捕获,否则会成为未处理的Promise拒绝:

    async function getTableData() {
      try {
        await prisma.table.findMany({}).catch(async (error) => {
          console.error('回调捕获错误:', error);
          await LogService.crearErrorLog(error);
          // 抛出的错误会被外层try/catch捕获
          throw ClassToSendAnErrorWithPersonalization.internalServer('Some message');
        });
      } catch (topError) {
        console.error('上层捕获回调抛出的错误:', topError);
      }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:03:26