Error.captureStackTrace în JavaScript

Erori V8 (Node.js, Chrome, Edge); nestandard

Adaugă proprietatea stack la un obiect oarecare, opțional ascunzând apelurile interne din ea.

Sintaxă
Error.captureStackTrace(obiect, functiaDeAscuns)

Ce face Error.captureStackTrace

Error.captureStackTrace(obiect) pune pe obiect o proprietate stack, cu lista apelurilor din acel moment. Al doilea parametru, opțional, este o funcție: toate cadrele de la ea în sus sunt scoase din stivă, ca utilizatorul să vadă locul unde a greșit el, nu interiorul bibliotecii tale.

Funcția vine din motorul V8 și există în Node.js și în browserele bazate pe Chromium. Nu face parte din standard, deci verifică existența ei înainte de folosire în codul pentru browsere.

Parametri

Parametru Descriere
obiect Obiectul care primește proprietatea stack.
functiaDeAscuns Opțional. Cadrele de la această funcție în sus nu apar în stivă.

Ce returnează

undefined.

Exemple

Exemplul 1: Stivă fără funcția ajutătoare

function valideaza(valoare) {
  if (!valoare) {
    const eroare = { name: "EroareValidare", message: "Valoare lipsă" };
    Error.captureStackTrace(eroare, valideaza);
    return eroare;
  }
}

function salveaza() {
  return valideaza("");
}

const e = salveaza();
console.log(e.stack.split("\n")[0]);
console.log(e.stack.includes("valideaza"), e.stack.includes("salveaza"));

Rezultat

EroareValidare: Valoare lipsă
false true

Greșeli frecvente

  • Folosești funcția în cod pentru Firefox sau Safari vechi fără verificare. Scrie Error.captureStackTrace?.(obiect).

Comenzi înrudite

  • Error (throw new Error): Creează un obiect de eroare cu mesaj, tip și stivă de apeluri, pe care îl arunci cu throw.
  • try / catch: Prinde erorile, ca programul să nu se oprească și să poți afișa un mesaj clar.
  • console.trace: Afișează mesajul împreună cu stiva de apeluri: ce funcții au dus până în acel punct.