JavaScript үндэс / Алдаа зохицуулах (try/catch)

Алдаа зохицуулах (try/catch)

Программ ажиллаж байх үед алдаа гарах нь хэвийн зүйл — сервер хариу өгөхгүй байх, хэрэглэгч буруу өгөгдөл оруулах, файл олдохгүй байх гэх мэт. try/catch ашиглан эдгээр алдааг барьж, программыг зогсоохгүйгээр үргэлжлүүлж болно.

try/catch үндэс

try блок дотрох кодыг гүйцэтгэхийг оролдоно. Алдаа гарвал catch блок ажиллана. Алдаа гараагүй бол catch алгасагдана.

javascript
try {
  const үр дүн = 10 / 0;
  console.log(үр дүн);
} catch (алдаа) {
  console.log("Алдаа гарлаа:", алдаа.message);
}

Жинхэнэ алдааг харцгаая — байхгүй хувьсагч дуудах:

javascript
try {
  console.log(байхгүйХувьсагч);
} catch (алдаа) {
  console.log("Алдаа барив:", алдаа.message);
  // Алдаа барив: байхгүйХувьсагч is not defined
}

console.log("Программ үргэлжилж байна..."); // Энэ ажиллана

catch байхгүй бол программ яг энд зогсох байсан — catch байсан учир дараагийн мөр ажилласан.

Алдааны объект

catch нь алдаа параметрт алдааны мэдээллийг агуулсан объект хүлээн авна. Хамгийн хэрэгтэй шинж чанарууд:

javascript
try {
  null.toString(); // null объектод метод дуудах
} catch (алдаа) {
  console.log(алдаа.name); // TypeError
  console.log(алдаа.message); // Cannot read properties of null
}

name нь алдааны төрлийг, message нь тайлбарыг агуулна.

finally блок

finally блок нь алдаа гарсан эсэхийг харгалзалгүй үргэлж ажиллана. Холболт хаах, loading дуусгах зэрэгт хэрэглэнэ.

javascript
function өгөгдөл авах() {
  console.log("Ачааллаж байна...");

  try {
    // Алдаа гаргая
    throw new Error("Сервер хариу өгсөнгүй");
  } catch (алдаа) {
    console.log("Алдаа:", алдаа.message);
  } finally {
    console.log("Ачааллалт дууслаа"); // Үргэлж ажиллана
  }
}

өгөгдөл авах();
// Ачааллаж байна...
// Алдаа: Сервер хариу өгсөнгүй
// Ачааллалт дууслаа

throw — алдаа өөрөө үүсгэх

throw ашиглан өөрийн алдаа үүсгэж болно. Оруулсан өгөгдлийг шалгаад буруу байвал алдаа илгээх тохиолдолд хэрэгтэй.

javascript
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 тустай:

javascript
function JSON задлах(текст) {
  try {
    const өгөгдөл = JSON.parse(текст);
    return өгөгдөл;
  } catch (алдаа) {
    console.log("JSON буруу форматтай байна");
    return null;
  }
}

JSON задлах('{"нэр": "Болд"}'); // Амжилттай
JSON задлах("энэ json биш");    // JSON буруу форматтай байна

Дараагийн хичээлд:

Callback функц гэж юу болох, яагаад хэрэгтэй болохыг үзнэ. Callback нь async программчлалын анхны алхам — Promise, async/await руу орохын өмнө ойлгох ёстой суурь ойлголт юм.