2016-08-22 11 views
0

は私が仕事関数を持っているNode.jsのエラー処理

を習得しようとすると、このようなexeptionを処理しようとしているのNode.js

Unhandled rejection AuthenticationError: The username you entered doesn't appear to belong to an account. Please check your username and try again.

+1

長時間実行閉じ問題がありますこの問題について:https://github.com/nodejs/node/issues/830これは、認証例外の非同期動作に関連しているようです。 – Pogrindis

+0

コードやエラーのスクリーンショットを投稿してはいけません。他の人はGoogleやSO自身の検索を使って同じものを検索することはできません。また、スクリーリーダを使用するユーザーにも影響します。また、この場合、スクリーンショットのテキストはほとんど見えません。 – rohithpr

答えて

3

Client.Session.create(device, storage, username, password) 
    .then(function(session) { 
     return session.getAccount() <-- NOTICE THE RETURN STATEMENT!! 
      .then(function(account) { 
      console.log(account.params) 
      res.statusCode = 200 
      res.setHeader('Content-Type', 'application/json') 
      res.end(JSON.stringify(account.params)); 
      return session 
     }) 
    }).catch(Exceptions.AuthenticationError, function(err) { 
      console.log(err) 
    }) 
をお試しください:私はまだ無効なログインの場合には、これを取得しています

戻り値がなければ、Client.Session.Create(...)によって返された約束の.thenハンドラは、解決された約束を返します(これがデフォルト動作です)。

プロミス拒否はexceiptionsの任意の種類ではありませんので、彼らは自動的に、例えば、追加された場合には、このようなものになるだろうとして再スローされていません。

session.getAccount(...).then(...).catch(function(){throw "FooBar"}); 
+0

注目すべき点: '.catch(Exceptions.AuthenticationError、function(err){...})'は[フィルタリングされたキャッチ](http://bluebirdjs.com/docs)なので、あなたがブルーバードの約束をしていることを確認してください。 /api/catch.html#filtered-catch)拡張機能(afaik)のみのブルーバード実装です。 –