Gestionarea erorilor JavaScript: SyntaxError: lipsește ) după lista de argumente

Continuând seria noastră de tratare a erorilor JavaScript, astăzi vom analiza îndeaproape eroarea JavaScript Missing Parenthesis After Argument List. Eroarea Missing Parenthesis After Argument List poate apărea dintr-o varietate de motive, dar, la fel ca majoritatea SyntaxErrors, apare în mod obișnuit atunci când există o greșeală de scriere, lipsește un operator sau un șir de caractere nu este scăpat în mod corespunzător.

În acest articol vom examina eroarea Missing Parenthesis After Argument List puțin mai detaliat, inclusiv unde se încadrează în ierarhia JavaScript Exception și care sunt cauzele apariției unor astfel de erori. Să-i dăm drumul!

The Technical Rundown

  • Toate obiectele de eroare JavaScript sunt descendenți ai obiectului Error, sau un obiect moștenit din acesta.
  • Obiectul SyntaxError este moștenit de la obiectul Error.
  • Eroarea Missing Parenthesis After Argument Listeste un tip specific de obiect SyntaxError.

Când ar trebui să îl folosiți?

După cum s-a menționat în introducere, eroarea Missing Parenthesis After Argument List poate apărea dintr-o varietate de motive. De cele mai multe ori, problema se referă la o greșeală de scriere sau la un operator uitat de un anumit tip. Pentru a ilustra mai bine acest lucru, putem explora doar câteva exemple simple.

O acțiune foarte tipică în JavaScript este aceea de a concatenate mai multe șiruri de caractere împreună pentru a forma un singur șir mai mare. Acest lucru poate fi realizat folosind un simplu operator + între două șiruri: console.log("Hello " + "world");

Sau, de asemenea, puteți concatena șiruri inline, folosind sintaxa backtick (`) și bracket ({}): console.log(`Hello ${worldVar}`);

Indiferent de modul în care se face, multe metode JavaScript acceptă un număr nelimitat de argumente (cum ar fi șiruri de caractere), inclusiv metoda console.log(). În exemplul de mai jos, observați ce se întâmplă dacă uităm să includem orice formă de concatenare pentru cele două șiruri de caractere ale noastre:

var printError = function(error, explicit) { console.log(` ${error.name}: ${error.message}`);}try { var name = "Jane Doe"; console.log("Name is:" name);} catch (e) { if (e instanceof SyntaxError) { printError(e, true); } else { printError(e, false); }}

Rezultatul este că producem imediat o eroare Missing Parenthesis After Argument List:

Uncaught SyntaxError: missing ) after argument list

După cum ați observat, am transmis două argumente către console.log(), dar nu le-am separat printr-o virgulă tipică (,) și nici nu am concatenat cele două valori ale șirurilor noastre împreună cu una dintre metodele de mai sus. Acest lucru face ca JavaScript să analizeze codul nostru foarte bine, până când ajunge la sfârșitul primului șir (is:") și trece la următorul argument (name). Deoarece nu i-am spus să concateneze și nici să aștepte un alt argument prin utilizarea unui separator de virgulă, JavaScript se așteaptă ca acesta să fie sfârșitul listei noastre de argumente pentru metoda console.log() și constată că lipsește paranteza de închidere ()), aruncând astfel o eroare Missing Parenthesis After Argument List.

Soluția depinde de modul în care dorim să se comporte codul nostru, dar în acest caz, deoarece transmitem argumente către console.log(), putem realiza concatenarea direct sau prin simpla adăugare a unui separator de virgulă. Separatorul cu virgulă este, în general, mai ușor de citit pentru scopurile noastre, așa că să mergem cu această opțiune:

var printError = function(error, explicit) { console.log(` ${error.name}: ${error.message}`);}try { var name = "Jane Doe"; console.log("Name is:", name);} catch (e) { if (e instanceof SyntaxError) { printError(e, true); } else { printError(e, false); }}

Aceasta ne oferă ieșirea numelui nostru conform așteptărilor:

Name is: Jane Doe

O soluție destul de simplă, cu siguranță, dar aceasta este problema cu eroarea Missing Parenthesis After Argument List, și cu SyntaxErrors în general. Toate sunt atât de evidente odată descoperite, dar dacă editorul de cod nu analizează și evaluează din mers codul pentru erori de sintaxă, este adesea ușor să nu le observi până când nu testezi tu însuți codul.

De asemenea, merită remarcat faptul că, la fel ca și alte SyntaxErrors, eroarea Missing Parenthesis After Argument List nu poate fi captată cu ușurință de blocul tipic try-catch. Deoarece problema este de sintaxă, încercarea motorului JavaScript de a executa codul problematic eșuează în acel moment exact. Acest lucru înseamnă, de obicei, că nu ajunge în punctul de execuție în care poate continua cu porțiunea catch a blocului, deoarece nu știe cum să o analizeze corect. Acest lucru poate fi rezolvat prin deplasarea execuției prin diferite fișiere și straturi, dar pentru toate intențiile și scopurile de bază, catching SyntaxErrors este o provocare majoră.

Pentru a vă scufunda și mai adânc în înțelegerea modului în care aplicațiile dvs. tratează erorile JavaScript, consultați instrumentul revoluționar de urmărire a erorilor JavaScript Airbrake pentru alerte în timp real și o perspectivă instantanee asupra a ceea ce a mers prost cu codul dvs. JavaScript.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.