Алдаа зохицуулах (try/catch)
Программ ажиллаж байх үед алдаа гарах нь хэвийн зүйл — сервер хариу өгөхгүй байх, хэрэглэгч буруу өгөгдөл оруулах, файл олдохгүй байх гэх мэт. try/catch ашиглан эдгээр алдааг барьж, программыг зогсоохгүйгээр үргэлжлүүлж болно.
try/catch үндэс
try блок дотрох кодыг гүйцэтгэхийг оролдоно. Алдаа гарвал catch блок ажиллана. Алдаа гараагүй бол catch алгасагдана.
try {
const үр дүн = 10 / 0;
console.log(үр дүн);
} catch (алдаа) {
console.log("Алдаа гарлаа:", алдаа.message);
}
Жинхэнэ алдааг харцгаая — байхгүй хувьсагч дуудах:
try {
console.log(байхгүйХувьсагч);
} catch (алдаа) {
console.log("Алдаа барив:", алдаа.message);
// Алдаа барив: байхгүйХувьсагч is not defined
}
console.log("Программ үргэлжилж байна..."); // Энэ ажиллана
catch байхгүй бол программ яг энд зогсох байсан — catch байсан учир дараагийн мөр ажилласан.
Алдааны объект
catch нь алдаа параметрт алдааны мэдээллийг агуулсан объект хүлээн авна. Хамгийн хэрэгтэй шинж чанарууд:
try {
null.toString(); // null объектод метод дуудах
} catch (алдаа) {
console.log(алдаа.name); // TypeError
console.log(алдаа.message); // Cannot read properties of null
}
name нь алдааны төрлийг, message нь тайлбарыг агуулна.
finally блок
finally блок нь алдаа гарсан эсэхийг харгалзалгүй үргэлж ажиллана. Холболт хаах, loading дуусгах зэрэгт хэрэглэнэ.
function өгөгдөл авах() {
console.log("Ачааллаж байна...");
try {
// Алдаа гаргая
throw new Error("Сервер хариу өгсөнгүй");
} catch (алдаа) {
console.log("Алдаа:", алдаа.message);
} finally {
console.log("Ачааллалт дууслаа"); // Үргэлж ажиллана
}
}
өгөгдөл авах();
// Ачааллаж байна...
// Алдаа: Сервер хариу өгсөнгүй
// Ачааллалт дууслаа
throw — алдаа өөрөө үүсгэх
throw ашиглан өөрийн алдаа үүсгэж болно. Оруулсан өгөгдлийг шалгаад буруу байвал алдаа илгээх тохиолдолд хэрэгтэй.
function нас шалгах(нас) {
if (нас < 0 || нас > 150) {
throw new Error("Буруу нас оруулсан байна: " + нас);
}
return "Нас зөв байна: " + нас;
}
try {
console.log(нас шалгах(25)); // Нас зөв байна: 25
console.log(нас шалгах(-5)); // Алдаа шидэнэ
} catch (алдаа) {
console.log("Алдаа:", алдаа.message);
// Алдаа: Буруу нас оруулсан байна: -5
}
JSON задлахад try/catch
Гаднаас ирсэн JSON өгөгдөл буруу форматтай байж болно. JSON.parse() алдаа гаргахад try/catch тустай:
function JSON задлах(текст) {
try {
const өгөгдөл = JSON.parse(текст);
return өгөгдөл;
} catch (алдаа) {
console.log("JSON буруу форматтай байна");
return null;
}
}
JSON задлах('{"нэр": "Болд"}'); // Амжилттай
JSON задлах("энэ json биш"); // JSON буруу форматтай байна
Дараагийн хичээлд:
Callback функц гэж юу болох, яагаад хэрэгтэй болохыг үзнэ. Callback нь async программчлалын анхны алхам — Promise, async/await руу орохын өмнө ойлгох ёстой суурь ойлголт юм.