2017-02-09 17 views
-3

В bluebird nodejs Когда я должен использовать .error() вместо .catch.в bluebird nodejs, когда я должен использовать .error() вместо .catch

В чем разница между ними. Пожалуйста, объясните вкратце.

promise() 
.then() 
.error() OR 
.catch() 
+2

Вы читали документацию? Что ты не понимаешь? http://bluebirdjs.com/docs/api/error.html –

+0

Когда есть документация, в которой объясняется точная разница между '.error()' и '.catch()', ваш вопрос должен быть о чем-то отличном от того, что разница ", потому что документация уже довольно четко показывает разницу, с очень хорошим примером. Похоже, вы просите нас найти документацию для вас. Если в этой документации есть что-то, что вы не понимаете, тогда ваш вопрос должен быть об этом. – jfriend00

+0

Я читал документы. Но все еще сомневался, поэтому на вопрос задан вопрос. –

ответ

1

.catch:

  • Ловит все ошибки и также ES6 standard

.error:

  • только улавливает, когда происходит ошибка является экземпляром Error
  • является удобным методом в Bluebird

Многие библиотеки не бросайте ошибку, которая является экземпляром Error, поэтому лучше использовать .catch

Некоторых библиотеки или пользовательский код может не вызывать ошибку, которая является экземпляром 0fc. Хотя рекомендуется набрасывать экземпляр Error (или подкласс), но нет ничего, что можно было бы сделать иначе.

От http://bluebirdjs.com/docs/api/catch.html:

Как .catch но вместо того, чтобы ловить все типы исключений, он ловит только оперативные ошибки. Обратите внимание: «ошибки» означают ошибки, как в объектах, которые являются экземпляром Error - не строки, цифры и так далее. См. Строку не является ошибкой.

В некоторых случаях, когда ошибка не являлась примером Error. Они исправлены.

  1. https://github.com/NodeRedis/node_redis/issues/374
  2. https://github.com/google/google-api-nodejs-client/issues/345
0
Whenever Dealing with bluebird think about the asynchronous call of 
try{ 
    }catch(){ 
    } block 
    function doSomeWork() { 
     return Promise.try(function() { 

     return request.get(url).then(function(response) { 
      // ... do some specific work 
     }); 

     }).catch(function(err) { 
     console.log("Some specific work failed", err); 
     throw err; // IMPORTANT! throw unless you intend to suppress the error 
     }); 
    } 
+0

Хотя этот код может ответить на вопрос, предоставляя дополнительный контекст относительно того, почему и/или как этот код отвечает на вопрос, улучшает его долгосрочную ценность. –