⊗jsSpExcThr 145 of 294 menu

Kasta undantag i JavaScript

I tidigare lektioner har vi lärt oss om två platser där JavaScript kastar ett undantag vid problem.

I ditt projekt kan det dock finnas andra situationer som är exceptionella för dig, men inte för JavaScript. I så fall kan du skapa och kasta dina egna, anpassade undantag.

Låt oss gå igenom den syntax som behövs för detta. Först måste undantaget skapas med kommandot new Error, och skicka undantagstexten som en parameter:

new Error('undantagstext');

Sedan måste detta undantag kastas med kommandot throw:

throw new Error('undantagstext');

Att kasta ett undantag får JavaScript att anse att ett exceptionellt tillstånd har inträffat. Det betyder att ett sådant undantag kan fångas med konstruktionen try-catch och behandlas på önskat sätt.

Låt oss med ett exempel se hur man använder detta. Antag att vi har en funktion som delar ett tal med ett annat:

function div(a, b) { return a / b; }

Låt oss anse att division med noll är förbjuden och att ett försök att göra detta bör resultera i ett exceptionellt tillstånd. För att göra detta kommer vi att kontrollera i funktionen om det inte finns ett försök att dividera med 0. Om inte - dividerar vi, om ja - kastar vi ett undantag:

function div(a, b) { if (b !== 0) { return a / b; } else { throw new Error('fel vid division med noll'); } }

Låt oss först bara försöka dividera med 0, utan att fånga undantaget:

alert( div(3, 0) );

I det här fallet avbryts exekveringen av skriptet och ett fel med texten 'fel vid division med noll' visas i konsolen (testa). Låt oss nu fånga vårt fel och hantera det på något sätt:

try { alert( div(3, 0) ); } catch (error) { alert('du försöker dividera med 0, vilket är förbjudet'); }

I JavaScript leder ett försök att ta roten ur ett negativt tal inte till att ett undantag kastas:

let result = Math.sqrt(-1); console.log(result); // skriver ut NaN

Skriv din egen funktion som tar roten ur ett tal och samtidigt kastar ett undantag om roten tas från ett negativt tal.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa