Olá pessoal!
Antes deste tópico o código (copiado da transcrição) correspondente estava:
// js/app/controllers/NegociacaoController.js
// código anterior omitido
adiciona(event) {
event.preventDefault();
ConnectionFactory
.getConnection()
.then(conexao => {
let negociacao = this._criaNegociacao();
new NegociacaoDao(conexao)
.adiciona(negociacao)
.then(() => {
this._listaNegociacoes.adiciona(negociacao);
this._mensagem.texto = 'Negociação adicionada com sucesso';
this._limpaFormulario();
});
})
.catch(erro => this._mensagem.texto = erro);
}
//...
Se o usuário digitasse uma data fora do padrão dd/mm/yyyy (definido em aulas anteriores), por exemplo dd/mm/yy, a exceção lançada na classe correspondente era "capturada" pelo catch da Promise no método adiciona(event), porque o código "let negociacao = this._criaNegociacao();" estava dentro da Promise.
Após a mudança de código deste tópico,
// aluraframe/client/js/app/controller/NegociacaoController.js
adiciona(event) {
event.preventDefault();
let negociacao = this._criaNegociacao();
new NegociacaoService()
.cadastra(negociacao)
.then(mensagem => {
this._listaNegociacoes.adiciona(negociacao);
this._mensagem.texto = mensagem;
this._limpaFormulario();
}).catch(erro => this._mensagem.texto = erro);
}
o código "let negociacao = this._criaNegociacao();" fica fora da Promise, ou seja, a respectiva exceção não é mais capturada pelo catch/exibida para o usuário.
Pensei em envolver o código modificado em um try/catch, mas pensando em padrões de projeto, legibilidade etc (assuntos que estamos vendo cada vez mais ao longo dos 3 cursos avançados de JS), essa seria a solução ideal?Questiono porque desta forma teremos dois "catchs" (o da Promise e o externo do try).
Atenciosamente.