微信小程序代码,如何主动抛出错误?

如果你希望直接返回并触发 catch,你可以通过 抛出异常 来实现。在云函数中,使用 throw 来抛出错误,云函数会捕捉到这个错误并触发 catch

代码修改

修改返回的方式,抛出一个错误而不是直接返回一个对象。这样,后续的逻辑就可以通过 catch 捕获到这个错误。

1. 抛出异常(触发 catch
// 云函数入口文件
const db = wx.cloud.database();

exports.main = async (event, context) => {
  const { configType } = event; // 参数,传入 'dev' 或 'test'

  try {
    // 查询数据库
    const res = await db.collection('yourCollectionName').where({
      _id: '123' // 假设这是你要查询的文档ID
    }).get();

    if (res.data.length > 0) {
      // 获取配置内容
      const configs = res.data[0].configs;
      const mergeConfig = configs[configType]?.mergeconfig;

      if (mergeConfig) {
        // 如果找到了对应的 mergeconfig
        return { code: 200, data: mergeConfig };
      } else {
        // 如果没有找到对应的 mergeconfig,抛出错误
        throw new Error(`未找到${configType}的mergeconfig`);
      }
    } else {
      // 如果没有找到对应的文档,抛出错误
      throw new Error("没有找到对应的文档");
    }
  } catch (err) {
    // 捕获错误并返回相应的错误信息
    return { code: 500, message: err.message }; // 可以根据实际需求自定义错误代码和消息
  }
};

2. 在前端捕获错误

在前端调用云函数时,如果云函数抛出了错误,catch 语句会被触发,你可以在前端捕获并处理这些错误。

wx.cloud.callFunction({
  name: 'getMergeConfig', // 云函数名称
  data: {
    configType: 'dev' // 传入 'dev' 或 'test'
  },
  success: res => {
    if (res.result.code === 200) {
      console.log('MergeConfig:', res.result.data);
      // 处理获取到的 mergeconfig 数据
    } else {
      wx.showToast({
        title: res.result.message,
        icon: 'none'
      });
    }
  },
  fail: err => {
    wx.showToast({
      title: `调用失败: ${err.message}`,
      icon: 'none'
    });
  }
});

解释:

  1. 抛出异常:在 if 判断中,当你找不到 mergeconfig 时,可以使用 throw new Error(message) 来抛出异常。这样,后面的代码就不会执行,而是跳转到 catch 语句。

  2. catch 捕获异常catch 语句会捕获到云函数内部抛出的异常,然后将错误信息返回给前端。

  3. 前端处理:在前端,通过 fail 回调来捕获到云函数抛出的错误,并进行相应的处理,比如显示错误信息。

触发 catch 的场景:

  • 如果 mergeconfig 未找到,将抛出异常并进入 catch,返回 { code: 500, message: "未找到dev的mergeconfig" }
  • 如果查询文档未找到,也会抛出异常并进入 catch,返回 { code: 500, message: "没有找到对应的文档" }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孽小倩

非常荣幸能帮助到你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值