Kļūdu izmešana JavaScript

Iepriekšējās nodarbībās mēs pētījām divas vietas, kurās JavaScript izmet izņēmumu dažādu problēmu gadījumā.

Tomēr jūsu projektā var būt citas situācijas, kas jums ir izņēmuma, bet JavaScript - nē. Šādā gadījumā mēs varam izveidot un izmest savas, lietotāja definētas kļūdas.

Analizēsim sintaksi, kas nepieciešama šim nolūkam. Vispirms kļūda jāizveido ar komandu new Error, kā parametru padodot kļūdas tekstu:

javascriptnew Error('kļūdas teksts');

Tad šī kļūda jāizmet ar komandu throw:

javascriptthrow new Error('kļūdas teksts');

Kļūdas izmešana liek JavaScript uzskatīt, ka ir radusies izņēmuma situācija. Tas nozīmē, ka šādu kļūdu var noķert ar konstrukciju try-catch un apstrādāt vajadzīgajā veidā.

Apskatīsim piemērā, kā to izmantot. Pieņemsim, ka mums ir funkcija, kas dala vienu skaitli ar citu:

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

Uzskatīsim, ka dalīšana ar nulli aizliegta un, mēģinot to izdarīt, jārada izņēmuma situācija. Šim nolūkam funkcijā pārbaudīsim, vai nav mēģinājuma dalīt ar 0. Ja nav - dalīsim, bet ja ir - izmetīsim kļūdu:

javascriptfunction div(a, b) {
  if (b !== 0) {
    return a / b;
  } else {
    throw new Error('kļūda dalot ar nulli');
  }
}

Vispirms vienkārši mēģināsim dalīt ar 0, neķerot kļūdu:

javascriptalert( div(3, 0) );

Šajā gadījumā skripta izpilde tiks pārtraukta un konsolē parādīsies kļūda ar tekstu 'kļūda dalot ar nulli' (pārbaudiet). Tagad noķersim mūsu kļūdu un kaut kā to apstrādāsim:

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('jūs mēģināt dalīt ar 0, kas ir aizliegts');
}
Задание 1

JavaScript mēģinājums iegūt kvadrātsakni no negatīva skaitļa nerada kļūdas izmešanu:

javascriptlet result = Math.sqrt(-1);
console.log(result); // izvadīs NaN

Uzrakstiet savu funkciju, kas iegūs kvadrātsakni no skaitļa un tajā pašā laikā izmetīs kļūdu, ja tiek mēģināts iegūt sakni no negatīva skaitļa.