Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Mensagem de erro e throw

Com a solução apresentada, quando ocorre erro a mensagem exibida na caixa fica "Error: Error: Não foi possível obter as negociações da semana". Pelo que percebi isso ocorre pois temos um

 throw new Error('Não foi possível obter as negociações da semana');  

em obterNegociacoesDaSemana() que irá retornar para a nova função obterNegociacoes() que por sua vez faz um catch neste erro e lança um novo

throw new Error(erro);

Pergunta 1: Cada um desses "throw new Error" está adicionando a String "Error:" à frente da String 'Não foi possível obter as negociações da semana'?

Pesquisando encontrei que é possível fazer isto em obterNegociacoesDaSemana()

throw  'Não foi possível obter as negociações da semana'; 

ao invés de

 throw new Error('Não foi possível obter as negociações da semana');  

e em obterNegociacoes() fazer isto

.catch( erro => {
    throw erro;
 });

ao invés de

.catch( erro => {
    throw new Error(erro);
});

o que, aparentemente, "resolve" o problema do "Error: Error: ..." no texto da mensagem que aparece pro usuário. O que nos leva a Pergunta 2.

Pergunta 2: Quais as implicações de lançar uma String ao invés de um objeto do tipo Error?

1 resposta
solução!

O que está acontecendo é que está sendo passando um Objeto Error para um novo Objeto Error, nisso a mensagem do error vira, Error: Error:, e essa é a string que você passa pra view; Acho que isso responde sua primeira pergunta. Agora sobre a segunda, nesse caso você pode fazer o throw de apenas uma string, porém na hora de tratar, você só vai ter essa mensagem e mais nenhuma informação, com o objeto Error, temos acesso a outras informações importantes para entendermos o erro e ajudar a tratar. Por exemplo, no objeto Error, tem a propriedade error.stack, que mostra a pilha de execução até explodir o erro !