Axios: Catch gibt keinen Fehler zurück

Erstellt am 2. März 2016  ·  3Kommentare  ·  Quelle: axios/axios

Warum gibt catch ein Objekt und kein Fehlerobjekt zurück?

Hilfreichster Kommentar

So funktioniert es mit $http von Angular, auf dem diese Bibliothek basiert. Mehr oder weniger ist es ein Artefakt und nicht unbedingt die richtige Vorgehensweise. Ich möchte zu einem konsistenteren Fehlerpfad wechseln, bei dem ein Error verwendet wird, an das gegebenenfalls Antwortdetails angehängt sind.

function createError(message, details) {
  var err = new Error(message);

  Object.keys(details, function (key) {
    err[key] = details[key];
  });

  return err;
}

createError('timeout of ' + config.timeout + 'ms exceeded', {
  code: 'ECONNABORTED',
  config: config
});

Ich möchte auch die Bibliothek so ändern, dass sie Promise nur ablehnt, wenn ein tatsächlicher Fehler auftritt, unabhängig vom HTTP-Statuscode. Während jetzt alles außerhalb des 200-300-Bereichs abgelehnt wird.

Alle 3 Kommentare

So funktioniert es mit $http von Angular, auf dem diese Bibliothek basiert. Mehr oder weniger ist es ein Artefakt und nicht unbedingt die richtige Vorgehensweise. Ich möchte zu einem konsistenteren Fehlerpfad wechseln, bei dem ein Error verwendet wird, an das gegebenenfalls Antwortdetails angehängt sind.

function createError(message, details) {
  var err = new Error(message);

  Object.keys(details, function (key) {
    err[key] = details[key];
  });

  return err;
}

createError('timeout of ' + config.timeout + 'ms exceeded', {
  code: 'ECONNABORTED',
  config: config
});

Ich möchte auch die Bibliothek so ändern, dass sie Promise nur ablehnt, wenn ein tatsächlicher Fehler auftritt, unabhängig vom HTTP-Statuscode. Während jetzt alles außerhalb des 200-300-Bereichs abgelehnt wird.

@mzabriskie
Sie können auch die Verwendung eines config-Flags in Betracht ziehen, um zu bestimmen, welche Aktion ausgeführt werden soll, wenn eine nicht 2xx/3xx-Antwort zurückgegeben wird.

Die request-promise Lib verwendet dafür das simple Flag/die Option. Wenn simple true , wird die Anforderungszusage bei Nicht-Netzwerkfehlern (2xx, 3xx) abgelehnt. Wenn das Flag falsch ist, weist es nichts zurück und liegt in der Verantwortung des Benutzers. Ich fand dies sehr nützlich und habe Anwendungen, die beide Einstellungen verwenden. Ich denke, ich habe normalerweise einfach auf true da dies im Allgemeinen eine bessere Standard-IMO ist.

https://github.com/request/request-promise#get -a-rejection-only-if-the-request-failed-for-technical-reasons

Schließt als Duplikat von #24

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen