Oi Naftali, tudo bem?
Antes de responder sua pergunta, é importante entendermos a diferença entre tratamento de erros na requisição e no subscribe. Quando ocorre um erro na requisição, significa que houve um problema ao enviar ou receber os dados da API, seja por problemas de conexão, de autenticação ou de servidor. Já quando ocorre um erro no subscribe, significa que houve uma falha no processamento dos dados recebidos pela API.
Agora, respondendo a sua pergunta sobre qual a melhor forma de tratar o erro na requisição ou no subscribe, a resposta é: depende do tipo de erro e do que você pretende fazer com ele.
Se o erro for relacionado à conexão com a API ou a algum problema de autenticação, por exemplo, o tratamento de erro deve ser feito na requisição, pois não adianta tentar processar os dados se não foi possível obter uma resposta da API. Nesse caso, o código pode ser semelhante ao seguinte trecho:
this.httpClient.get('http://api.com/animals').subscribe(
(response) => {
// processa os dados recebidos
},
(error) => {
// trata o erro de conexão ou autenticação
}
);
Já se o erro for relacionado ao processamento dos dados recebidos, o tratamento de erro deve ser feito no subscribe. Por exemplo, se a API retorna um objeto com uma propriedade que não existe ou com um valor inválido, o código pode ser semelhante ao seguinte trecho:
this.httpClient.get('http://api.com/animals').subscribe(
(response) => {
if (response.hasOwnProperty('name')) {
// processa os dados recebidos
} else {
// trata o erro de processamento
}
},
(error) => {
// trata o erro de conexão ou autenticação
}
);
No caso específico da função "curtir()" do arquivo "animais.service.ts", o tratamento de erro feito pelo instrutor pode estar relacionado ao processamento dos dados recebidos pela API, ou pode ser uma precaução extra para lidar com possíveis erros de conexão ou autenticação.
Em geral, a recomendação é tratar os erros na requisição sempre que possível, pois assim é possível lidar com problemas que impedem o processamento dos dados de forma mais eficiente. No entanto, se o erro estiver relacionado ao processamento dos dados, é necessário tratar no subscribe para garantir a integridade do código.
Espero que tenha te ajudado.
Um abraço e bons estudos.