Ошибка, возникшая во время выполнения промиса в `Promise.all`, не попадает в блок catch, потому что `Promise.all` возвращает промис, который завершается, когда все переданные ему промисы завершены. В этом случае происходит обработка результата выполнения всех промисов, но не отдельных ошибок.
Чтобы правильно обрабатывать не пойманные ошибки, которые возникают в промисах, переданных в `Promise.all`, можно использовать метод `Promise.allSettled()`, который возвращает промис, завершающийся после завершения всех промисов, независимо от их результата (успеха или ошибки). Далее можно проверить каждый результат на наличие ошибки и обработать их.
Пример:
```javascript
Promise.allSettled([
fetch('https://api.example.com/data'),
fetch('https://api.example.com/other-data')
])
.then(results => {
results.forEach(result => {
if (result.status === 'rejected') {
console.error('Error:', result.reason);
}
});
});
```
Чтобы настроить общий обработчик для всех не пойманных ошибок в промисах, переданных в `Promise.all`, можно обернуть вызов `Promise.all` или `Promise.allSettled` в try-catch блок и внутри обрабатывать любые ошибки, которые могут возникнуть.
Пример:
```javascript
try {
await Promise.all([
somePromise(),
anotherPromise()
]);
} catch (error) {
console.error('Unhandled error:', error);
}
```
Таким образом, можно предотвратить полное падение скрипта и более гибко управлять обработкой ошибок, возникающих в промисах, переданных в `Promise.all` или `Promise.allSettled`.