У меня ошибка в приложении: JSON.stringify не может сериализовать циклические структуры. И мне нужно это поймать. Для этого я решил переопределить метод JSON.stringify с помощью replacer, который печатает в консоли объект с циклической ссылкой, например так:

const isCyclic = (obj: any): any ={amp}gt; { let keys: any[] = []; let stack: any[] = []; let stackSet = new Set(); let detected = false; function detect(obj: any, key: any) { if (obj {amp}amp;{amp}amp; typeof obj != 'object') { return; } if (stackSet.has(obj)) { // it's cyclic! Print the object and its locations. let oldindex = stack.indexOf(obj); let l1 = keys.join('.')   '.'   key; let l2 = keys.slice(0, oldindex   1).join('.'); console.log('CIRCULAR: '   l1   ' = '   l2   ' = '   obj); console.log(obj); detected = true; return; } keys.push(key); stack.push(obj); stackSet.add(obj); for (var k in obj) { //dive on the object's children if (Object.prototype.hasOwnProperty.call(obj, k)) { detect(obj[k], k); } } keys.pop(); stack.pop(); stackSet.delete(obj); return; } detect(obj, 'obj'); return detected; }; const originalStringify = JSON.stringify; JSON.stringify = (value: any) ={amp}gt; { return originalStringify(value, isCyclic(value)); }; 

И теперь мне нужно изменить его с помощью try / catch, который может выдавать ошибку с перехваченным объектом с циклическими ссылками. Можете ли вы порекомендовать лучший способ, как я могу изменить свою функцию, пожалуйста?

Правильно ли я понимаю, что вы хотите выдать пользовательскую ошибку и использовать эту ошибку с помощью рекурсивной функции?

Кстати не запускайте этот код …

 const err = { no: 1, msg: 'simple error' } function recusiveErrors(err){ try{ console.log(`getting rdy to throw`) // throwing throw err } catch(error){ // catching and calling recursivel recusiveErrors(error) } } 

Вы можете выбросить ошибку из блока try в следующий блок catch, и вы также можете вложить их, но это мерзость.

FUBAR

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,