无法使用try..catch捕获调用方法中的异常?
发布于 6 年前 作者 guiying89 8942 次浏览 来自 问答
  • 当前 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)
    })
  }
2 回复

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

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

回到顶部