首页 > 解决方案 > 如何处理 catch 中的错误 - vue.js

问题描述

我想知道如何处理承诺中的错误。我有带有电子邮件和个人代码输入的注册表单。当有人不填写输入时,就会出现错误。但是当我的基地中存在电子邮件或个人代码时,我想将他重定向到登录页面 - 因为他的帐户存在。还有一个问题。如果我的基地中有一封电子邮件,他会被重定向到登录(没关系),但是当他写错电子邮件但个人代码很好时,我的控制台出现错误。这是一个代码:

       Promise.all(auxData).then(() => {
          this.profileCheck()
        .then(() => {
          // some code
        })
        .catch(e => {
          if ( e.email.custEmailExists == "This email existe." ) {
            co.postLogin(loginData).then(data => {
             this.$router.push({ name: "login" }); 
            });
          } else if (
            e.person_code.custPersonCodeExists == "this personal code 
               existe") {
             this.$router.push({ name: "login" });
          }
         });
    });

因此,在第二种情况下(这是电子邮件错误且存在个人代码的情况),我的错误是:“未捕获(承诺中)TypeError:无法读取未定义的属性'custEmailExists'”。这个错误从我的 api 中自动显示。第一个条件被删除,因为电子邮件是新的,所以它必须关注第二个条件。但事实并非如此。

标签: javascriptvue.jspromisetry-catch

解决方案


JavaScript 尝试检查 的值e.email.custEmailExist,但 e.email 是undefined。利用:

if (e.email && e.email.custEmailExists == "This email existe.")

或者:

if ((e.email || {}).custEmailExists == "This email existe.")

第二个有点hacky。


推荐阅读