error-handling - 有没有更好的方法来捕获clojurescript中的javascript错误?

标签 error-handling interop firebase-authentication clojurescript

我一直在clojurescript中使用firebase,并且在这里尝试过建议:

How to catch any Javascript exception in Clojurescript?

到目前为止,我的代码是:

(defn register [email password]
  (try
    (let [reg (.createUserWithEmailAndPassword (.auth firebase) email password)
          _ (.log js/console reg)]
       reg)
      (catch :default e
        (.log js/console "Register Error:" e))))

我怀疑没有发现问题的原因是评估可能会在以后进行,而这只是为了验证这一想法。

我也尝试过:
(defn register [email password]
  (try
    (.createUserWithEmailAndPassword (.auth firebase) email password)
      (catch :default e
        (.log js/console "Register Error:" e))))

我称其为:
(apply register ((juxt :email :password) @app-state))

如果我通过了我已经向其注册的电子邮件,则会收到auth/email-already-in-use错误,但是我无法捕获它。
www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=AIzaSyDzsfz98Y6Pjl1n-uAzfI6GHWKqShFdRI4:1
POST https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=AIzaSyDzsfz98Y6Pjl1n-uAzfI6GHWKqShFdRI4 400 ()

firebase.inc.js:81
Uncaught
  Qcode: "auth/email-already-in-use"
  message: "The email address is already in use by another account."
  __proto__: Error
(anonymous) @ firebase.inc.js:81

我怎么抓到它?还是使用原始javascript处理此问题的唯一方法?
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
  // Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  // ...
});

最佳答案

Firebase身份验证是异步的。 Javascript(通常是Clojurescript)的try...catch在回调中不起作用。调用Firebase处理程序提供的catch函数,并在发生错误时进行回调,如下所示-这是上面文章中JS代码的字面翻译:

(defn register [email password]
  (.. firebase auth (createUserWithEmailAndPassword email password)
      (catch (fn [e] (.log js/console "Register Error:" e))))

关于error-handling - 有没有更好的方法来捕获clojurescript中的javascript错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41978754/

相关文章:

c# - 未正确对齐的字段

Android app bundle 上传会在 Firebase 身份验证中创建奇怪的帐户 (<characters>.<5 digits>@gmail.com)

Firebase 身份验证 : Emails sent but not received on special email addresses such as *@gmx. 位于

.net - 使用 Ent-Lib 拨号跟踪的意外后果,没有错误记录

php - 如何从错误日志文件中获取每个错误?

python - Scrapy 抑制处理的错误

vb.net - 按行 NUMBER 和列 LETTER 获取 Excel 单元格

c# - Excel Interop - 效率和性能

android - 如何唯一标识从后端服务器上的android Facebook登录获取的userId

angular - 单击按钮时处理 Angular 错误