გამონაკლისების გამოტანა JavaScript-ში
წინა გაკვეთილებში ჩვენ შევისწავლეთ ორი ადგილი, სადაც JavaScript გამოჰყოფს გამონაკლისს რაიმე პრობლემის შემთხვევაში.
თქვენს პროექტში, თუმცა, შეიძლება იყოს სხვა სიტუაციებიც, რომლებიც თქვენთვის გამონაკლისია, მაგრამ JavaScript-ისთვის - არა. ამ შემთხვევაში ჩვენ შეგვიძლია შევქმნათ და გამოვყოთ ჩვენი, მომხმარებლის გამონაკლისები.
მოდით გავაანალიზოთ ამისთვის საჭირო სინტაქსი. დასაწყისისთვის გამონაკლისი უნდა შეიქმნას
ბრძანების new Error საშუალებით,
პარამეტრად გადაწოდებული გამონაკლისის ტექსტით:
new Error('გამონაკლისის ტექსტი');
შემდეგ ეს გამონაკლისი უნდა გაყოთ ბრძანების
throw საშუალებით:
throw new Error('გამონაკლისის ტექსტი');
გამონაკლისის გამოტანა აიძულებს JavaScript-ს
ჩათვალოს, რომ მოხდა გამონაკლისური სიტუაცია.
ეს ნიშნავს, რომ ასეთი გამონაკლისის დაჭერა
შესაძლებელია კონსტრუქციის try-catch საშუალებით და
საჭიროებიდან გამომდინარე დაუმუშავებლად.
მოდით შევხედოთ მაგალითს, თუ როგორ გამოვიყენოთ ეს. დავუშვათ, გვაქვს ფუნქცია, რომელიც ყოფს ერთ რიცხვს მეორეზე:
function div(a, b) {
return a / b;
}
დავუშვათ, რომ ნულზე გაყოფა
აკრძალულია და ამის გაკეთების მცდელობისას
უნდა წარმოიშვას გამონაკლისური სიტუაცია. ამისთვის
ფუნქციაში შევამოწმებთ, არის თუ არა
გაყოფა 0-ზე. თუ არა - გავყოფთ,
ხოლო თუ კი - გამოვყოფთ გამონაკლისს:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('ნულზე გაყოფის შეცდომა');
}
}
მოდით, დასაწყისისთვის უბრალოდ ვცადოთ გაყოფა
0-ზე, გამონაკლისის დაჭერის გარეშე:
alert( div(3, 0) );
ამ შემთხვევაში სკრიპტის შესრულება შეწყდება
და კონსოლში გამოჩნდება შეცდომა ტექსტით 'ნულზე გაყოფის შეცდომა' (შეამოწმეთ). მოდით
ახლა დავიჭიროთ ჩვენი შეცდომა და
როგორმე დავამუშაოთ იგი:
try {
alert( div(3, 0) );
} catch (error) {
alert('თქვენ ცდილობთ გაყოფა 0-ზე, რაც აკრძალულია');
}
JavaScript-უ უარყოფითი რიცხვის ფესვის აღების მცდელობა არ იწვევს გამონაკლისის გამოტანას:
let result = Math.sqrt(-1);
console.log(result); // გამოიტანს NaN
დაწერეთ თქვენი საკუთარი ფუნქცია, რომელიც ამოიღებს ფესვს რიცხვიდან და ამასთანავე გამოჰყოფს გამონაკლისს, თუ ფესვი ამოღებულია უარყოფითი რიცხვიდან.