收藏
回答

无法使用try..catch捕获调用方法中的异常?

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 客户端 6.7.2 2.2.5

- 当前 Bug 的表现(可附上截图)

在form submit回调方法中,调用表单验证方法,无法捕获验证方法内抛出的异常?同步调用为什么会出现这么诡异的问题?


现在我只能改成 rerturn new Error() 再由上层判断处理




代码:


// 校验表单
  validateContact (contact) {
    if (contact.name == '') {
      throw new Error('请填写联系人姓名')
    }
    if (contact.phone == '') {
      throw new Error('请填写联系电话')
    }
    if (!/^\d+-?\d+$/.test(contact.phone)) {
      throw new Error('电话格式错误,必须是xxx-xxxxxxxx或者1xxxxxxxxxx格式')
    }
    if (contact.province == '' || contact.city == '' || contact.county == '') {
      throw new Error('请选择省市区')
    }
    if (contact.address == '') {
      throw new Error('请填写详细地址')
    }
  },
  // 提交表单
  submit (e) {

 
    try {
      this.validateContact(this.data.formdata)
    } catch (e) {
      return
    }
 
    wx.showLoading()
    api.profile.updateAddress(this.data.formdata).then(res => {
      wx.hideLoading()
      wx.showToast({
        title: '保存成功',
        duration: 1500,
        success: function () {
          setTimeout(function () {
            wx.navigateBack()
          }, 1500)
        }
      })
    }).catch(e => {
      wx.hideLoading()
      console.error('保存地址失败:', e)
      util.alert('保存失败:' + e.message)
    })
  }


最后一次编辑于  2018-10-17
回答关注问题邀请回答
收藏

2 个回答

  • 卢霄霄
    卢霄霄
    2018-10-17

    是有这个问题,以前也有人提过。。直接try 的内部的异常可以捕获,方法内的捕获不到。。

    2018-10-17
    有用
    回复 1
    • 2018-10-17

      是唉,到处是坑

      2018-10-17
      回复
  • 仲春来
    仲春来
    2018-10-17

    突然觉得这个问题有点可爱怎么办?

    2018-10-17
    有用
    回复
登录 后发表内容