尝试捕获 Firebase Auth CreateUser 不工作

Try-catch on Firebase Auth CreateUser not working

我在每个 if() 语句之前以及 createUserWithEmailAndPassword 函数之前都调用了一个 try catch,但 catch 从未起作用,错误确实发生了。同样通过从 firebase docs 复制代码,它也不起作用。

我做错了什么?我想捕获 'auth/email-already-in-use' 错误代码(以及任何其他错误代码)。

我添加了没有 try-catch 的代码。

btnInitialRegister.addEventListener('click', (e) => {
load(strRegisterForm);
hideInitial();
const registerForm = document.querySelector('#registerForm');
const btnRegisterUser = registerForm.querySelector('#userRegisterBtn');
btnRegisterUser.addEventListener('click', e => {
    const registerEmail = registerForm.querySelector('#registerEmail');
    const registerPassword = registerForm.querySelector('#registerPassword');
    const verifyPassword = registerForm.querySelector('#verifyPassword');
    e.preventDefault();
    if (registerPassword.value.length >= 6) {
        if (registerPassword.value == verifyPassword.value) {
                auth.createUserWithEmailAndPassword(registerEmail.value,registerPassword.value)
                .then(userCredential => {
                        authUser = userCredential.user.uid;
                        auth.signOut()
                        console.log('logged out');
                        if (authUser) {
                            setTimeout(function(){registerForm.querySelector('#response').innerHTML += 'Usuario creado con exito. Estas siendo redirigido.'}, 5000);
                            load(strSignInForm);
                        }
                    }) 
                    
        } else {
            registerForm.querySelector('#response').innerHTML = 'Las contraseñas no coinciden.'
        }
    } else {
        registerForm.querySelector('#response').innerHTML += 'Las contraseñas deben tener un minimo de 6 caracteres.'
    }
})

});

我想通了!我正在结束这个问题。在 .then 语句后添加以下内容。

                    .catch(function (error) {
                    var errorCode = error.code;
                    var errorMessage = error.message;
                    if (errorCode == 'auth/email-already-in-use') {
                        document.querySelector('#response').innerHTML = 'El email ya esta siendo utilizado.'
                    } else {
                        document.querySelector('#response').innerHTML = errorMessage;
                    }
                })

只是解释为什么添加 .catch() 对你有用。

您需要捕获 使用.catch()catch 块(如果您使用try-catch 块)抛出的错误。 catch 块包含指定在 try 块中抛出异常时要执行的操作的语句。

如果您没有明确捕获异常,那么它将中止 运行 进程并且您的其余代码将不会执行。