გამონაკლისების გამოტანა JavaScript-ში

წინა გაკვეთილებში ჩვენ შევისწავლეთ ორი ადგილი, სადაც JavaScript გამოჰყოფს გამონაკლისს რაიმე პრობლემის შემთხვევაში.

თქვენს პროექტში, თუმცა, შეიძლება იყოს სხვა სიტუაციებიც, რომლებიც თქვენთვის გამონაკლისია, მაგრამ JavaScript-ისთვის - არა. ამ შემთხვევაში ჩვენ შეგვიძლია შევქმნათ და გამოვყოთ ჩვენი, მომხმარებლის გამონაკლისები.

მოდით გავაანალიზოთ ამისთვის საჭირო სინტაქსი. დასაწყისისთვის გამონაკლისი უნდა შეიქმნას ბრძანების new Error საშუალებით, პარამეტრად გადაწოდებული გამონაკლისის ტექსტით:

javascriptnew Error('გამონაკლისის ტექსტი');

შემდეგ ეს გამონაკლისი უნდა გაყოთ ბრძანების throw საშუალებით:

javascriptthrow new Error('გამონაკლისის ტექსტი');

გამონაკლისის გამოტანა აიძულებს JavaScript-ს ჩათვალოს, რომ მოხდა გამონაკლისური სიტუაცია. ეს ნიშნავს, რომ ასეთი გამონაკლისის დაჭერა შესაძლებელია კონსტრუქციის try-catch საშუალებით და საჭიროებიდან გამომდინარე დაუმუშავებლად.

მოდით შევხედოთ მაგალითს, თუ როგორ გამოვიყენოთ ეს. დავუშვათ, გვაქვს ფუნქცია, რომელიც ყოფს ერთ რიცხვს მეორეზე:

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

დავუშვათ, რომ ნულზე გაყოფა აკრძალულია და ამის გაკეთების მცდელობისას უნდა წარმოიშვას გამონაკლისური სიტუაცია. ამისთვის ფუნქციაში შევამოწმებთ, არის თუ არა გაყოფა 0-ზე. თუ არა - გავყოფთ, ხოლო თუ კი - გამოვყოფთ გამონაკლისს:

javascriptfunction div(a, b) {
  if (b !== 0) {
    return a / b;
  } else {
    throw new Error('ნულზე გაყოფის შეცდომა');
  }
}

მოდით, დასაწყისისთვის უბრალოდ ვცადოთ გაყოფა 0-ზე, გამონაკლისის დაჭერის გარეშე:

javascriptalert( div(3, 0) );

ამ შემთხვევაში სკრიპტის შესრულება შეწყდება და კონსოლში გამოჩნდება შეცდომა ტექსტით 'ნულზე გაყოფის შეცდომა' (შეამოწმეთ). მოდით ახლა დავიჭიროთ ჩვენი შეცდომა და როგორმე დავამუშაოთ იგი:

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('თქვენ ცდილობთ გაყოფა 0-ზე, რაც აკრძალულია');
}
Задание 1

JavaScript-უ უარყოფითი რიცხვის ფესვის აღების მცდელობა არ იწვევს გამონაკლისის გამოტანას:

javascriptlet result = Math.sqrt(-1);
console.log(result); // გამოიტანს NaN

დაწერეთ თქვენი საკუთარი ფუნქცია, რომელიც ამოიღებს ფესვს რიცხვიდან და ამასთანავე გამოჰყოფს გამონაკლისს, თუ ფესვი ამოღებულია უარყოფითი რიცხვიდან.