Axios: Catch não retorna erro

Criado em 2 mar. 2016  ·  3Comentários  ·  Fonte: axios/axios

Por que catch retorna um objeto e não um objeto de erro?

Comentários muito úteis

É assim que é feito com $ http do Angular, no qual esta biblioteca é baseada. Mais ou menos é um artefato e não necessariamente a maneira certa de fazer as coisas. Eu gostaria de mover para um caminho de erro mais consistente, onde um Error é usado com detalhes de resposta anexados, se relevante.

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
});

Também gostaria de alterar a lib para rejeitar apenas Promise quando ocorrer um erro real, independentemente do código de status HTTP. Considerando que agora qualquer coisa fora da faixa de 200-300 é rejeitada.

Todos 3 comentários

É assim que é feito com $ http do Angular, no qual esta biblioteca é baseada. Mais ou menos é um artefato e não necessariamente a maneira certa de fazer as coisas. Eu gostaria de mover para um caminho de erro mais consistente, onde um Error é usado com detalhes de resposta anexados, se relevante.

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
});

Também gostaria de alterar a lib para rejeitar apenas Promise quando ocorrer um erro real, independentemente do código de status HTTP. Considerando que agora qualquer coisa fora da faixa de 200-300 é rejeitada.

@mzabriskie
Você também pode considerar o uso de um sinalizador de configuração para determinar qual ação tomar quando uma resposta não 2xx / 3xx for retornada.

O request-promise lib usa a bandeira / opção simple para isso. Quando simple é true , a solicitação-promessa rejeita em erros fora da rede (2xx, 3xx). Quando o sinalizador é falso, ele não rejeita nada e passa a ser de responsabilidade do usuário. Achei isso muito útil e tenho aplicativos que usam as duas configurações. Eu acho que normalmente tenho definido o simples como true , pois geralmente é um IMO padrão melhor.

https://github.com/request/request-promise#get -a-rejeição-somente-se-a-solicitação-falhou-por-motivos-técnicos

Fechando como duplicata de # 24

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

jdpagley picture jdpagley  ·  3Comentários

emaincourt picture emaincourt  ·  3Comentários

tbaustin picture tbaustin  ·  3Comentários

altruisticsoftware picture altruisticsoftware  ·  3Comentários

airtonix picture airtonix  ·  3Comentários