Sobes.tech
Middle

Qual è la differenza tra gestire il rifiuto nel secondo argomento di .then() e in un .catch() separato? Perché usare .catch() se si può gestire il rifiuto direttamente in .then()?

sobes.tech AI

Risposta dell'AI

Разница между обработкой reject во втором аргументе .then() и в отдельном .catch() заключается в поведении цепочки промисов и удобстве обработки ошибок.

  • Обработка reject во втором аргументе .then(onFulfilled, onRejected) ловит ошибку только для этого конкретного промиса.
  • .catch(onRejected) ловит все ошибки, которые произошли в предыдущих промисах цепочки, то есть это более универсальный и удобный способ централизованной обработки ошибок.

Использование .catch() позволяет писать код, где все ошибки обрабатываются в одном месте, что улучшает читаемость и поддержку кода.

Пример:

fetch(url)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Ошибка:', error));

Если использовать второй аргумент .then(), то ошибки, возникшие в последующих .then(), не будут пойманы, что может привести к необработанным исключениям.