2017-01-20 3 views
1

Ich verwende Bluebird Versprechen und Standard-Fehler. Problem ist, wenn ich Fehler werfen wie dieseSpezifische Fehler Catch in BlueBird Versprechen

return new PromiseReturns(function (resolve, reject) { 
     reject(new StandardError({ 
     status: 'Error', 
     message: "Not Found", 
     originalError: err, 
     code: 404 
     })); 
    }); 

es nicht in diesem Fang erhielt nicht

.catch(StandardError , function(err){ 
}) 

statt dessen erhielt in

.catch(function(err){ 
}) 
+0

@JaromandaX drossel können Sie bestimmte Fehler fangen –

+0

mein Update-Code –

+0

'neue PromiseReturns' Siehe ??? Wenn du wirklich "neues Versprechen" meintest, solltest du einfach "Promise.reject (...);" zurückgeben. –

Antwort

0

neue Promise erstellen jedes Mal das Problem verursacht wurde. Ich habe meinen gesamten Code in einem einzigen Versprechen zusammengefasst und das hat funktioniert.

zum Beispiel:

 function requestFromController(body){ 

      return new PromiseReturns(function (resolve, reject) { 
       if(body){ 
        reject(new StandardError({ 
         status: 'Error', 
         message: "Not Found", 
         originalError: err, 
         code: 404 
        })); 
       } 

       db.model.find().then(x => { 
        resolve(x); 
       }) 
      }); 
    } 
0

Es funktioniert für mich. Check this out

var Promise = require('bluebird') 
var StandardError = require("standard-error") 

Promise.resolve().then(function() { 
    throw new StandardError("Not Found", {code: 404}) 
}).catch(StandardError, function(e) { 
    console.log('custom error caught'); 
}).catch(function(e) { 
    console.log('generic caught'); 
}) 

Ausgang:

$ custom error caught 
+0

Du siehst den Unterschied zwischen deinem Code und dem Code in der Frage ... richtig? –

+0

Ich benutze Standard-Fehler-Modul. eigentlich sollte es richtig fangen fangen –

+0

Mein Code aktualisiert. Arbeitet immer noch richtig für mich. –

Verwandte Themen