Hedhja e Përjashtimeve në JavaScript

Në mësimet e mëparshme kemi studiuar dy vende ku JavaScript hedh një përjashtim në rast problemesh.

Në projektin tuaj, megjithatë, mund të ketë situata tjera që për ju janë përjashtuese, por për JavaScript - jo. Në këtë rast ne mund të krijojmë dhe të hedhim përjashtimet tona, të personalizuara.

Le të shqyrtojmë sintaksën e nevojshme për këtë. Fillimisht përjashtimi duhet krijuar duke përdorur komandën new Error, duke kaluar tekstin e përjashtimit si parametër:

javascriptnew Error('teksti i përjashtimit');

Pastaj ky përjashtim duhet hedhur duke përdorur komandën throw:

javascriptthrow new Error('teksti i përjashtimit');

Hedhja e një përjashtimi e detyron JavaScript të konsiderojë se ka ndodhur një situatë përjashtuese. Kjo do të thotë se një përjashtim i tillë mund të kapet duke përdorur konstruksionin try-catch dhe të trajtohet në mënyrën e dëshiruar.

Le të shohim një shembull se si të përdoret kjo. Le të themi se kemi një funksion që ndan një numër me një tjetër:

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

Le të konsiderojmë se pjesëtimi me zero është i ndaluar dhe në përpjekje për ta bërë këtë duhet të lindë një situatë përjashtuese. Për këtë do të kontrollojmë në funksion nëse ka një përpjekje për të pjesëtuar me 0. Nëse jo - do të pjesëtojmë, por nëse po - do të hedhim një përjashtim:

javascriptfunction div(a, b) {
  if (b !== 0) {
    return a / b;
  } else {
    throw new Error('gabim i pjesëtimit me zero');
  }
}

Fillimisht le të përpiqemi thjesht të pjesëtojmë me 0, pa kapur përjashtimin:

javascriptalert( div(3, 0) );

Në këtë rast ekzekutimi i skriptit do të ndërpritet dhe në konsol do të shfaqet një gabim me tekstin 'gabim i pjesëtimit me zero' (kontrollo). Tani le të kapim gabimin tonë dhe ta trajtojmë atë në një farë mënyre:

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('ju po përpiqeni të pjesëtoni me 0, gjë që është e ndaluar');
}
Задание 1

Në JavaScript, përpjekja për të nxjerrë rrënjën katrore nga një numër negativ nuk çon në hedhjen e një përjashtimi:

javascriptlet result = Math.sqrt(-1);
console.log(result); // do të shfaqë NaN

Shkruani funksionin tuaj, i cili do të nxjerrë rrënjën katrore nga një numër dhe në të njëjtën kohë do të hedhë një përjashtim, nëse rrënja katrore nxirret nga një numër negativ.