JavaScriptda error handling va custom error yaratish
Assalamu Alaykum bugun Javascriptdagi xatolar bilan ishlash ularni o'zimizga moslashtirishni ko'rib chiqamiz.
Xatolar nima ?
Xatolar (Error ) o'zi nima ? Ular qanday bo'ladi ? Xatolar har xil bo'ladi ba’zilari dasturchilar tomonidan kod yozish jarayonida qilingan ya’ni dasturlash tilining syntax yani yozilish uslubidagi xatolar bo'lishi mumkin va yana dastruchi bilmagan holatda bo'ladigan xatolar mantiqiy yani dasturni ishlash logikasidagi xatolik bo'lishi mumkin yoki noto'g'ri tipga moslashtirish yoki obyektda bo'lmagan funksiyani chaqirish orqali bo'lishi mumkin. Bizning dasturimiz to'liq ishlashi uchun undagi xatolarni nazorat qilib borishimiz zarur (exception handling) .
Bu ko'pincha bizga aloqasi bo'lmagan tomon sababli bo'ladi :
Foydalanuvchi (user)
Third party APIs
chunki ular ishonchsiz bo'ladi va o'zlarini qanday tutirshlarini bilmaymiz.
Biz Javascriptda xatolar bilan ishlash uchun try…catch…finally kod qismidan foydalanamiz.Bu kod 3 qismdan iborat :
try - bu bizning kodimizni testlashga yordam beradi.
catch - xatolarni ushlab unining ustida amallarni oshirishga yordam beradi.
throw- orqali yaratilgan yoki hosil bo'lgan xatolarni _catch_qismiga uzatadi.
finally - kodning natijasidan qatiy nazar ishlaydiagn qism.
!!! Agar kodda xato paydo bo'lsa u keyingi qatorga o'tmasdan catch qismi ishga tushadi .
Misol:
try {
throw "Oops; this is not an Error object";
let a = 10 //this line doesn't work
} catch (e) {
if (!(e instanceof Error)) {
e = new Error(e);
}
console.error(e.message);
} finally {
console.log("finally");
}O'zimizning Xatolarni yaratish (Custom Error)
Error hosil bo'lganda Javascript u haqida obyekt yaratadi.Unda 2ta asosiy qism _name va message ._(e.g name:ReferenceError , message :Incomplete data).
class Error {
constructor(message) {
this.message = message;
this.name = "Error"; // (different names for different built-in error classes)
this.stack = <call stack>; // non-standard, but most environments support it
}
}Errorlar qanday kelib chiqishi haqida gaplashib o'tdik endi o'zimizga kerkali bo'lgan Error classlarni yaratishni ko'rib chiqamiz.Bular bizga tarmoq orqali so'rovlarda HTTPError ,database uchun DBError va boshqalar. Masalan HTTPErrorda name va messagedan tashqari ,statusCode bo'lishi kerak.
Custom xatolarga misollar:
function CustomException(message, metadata) {
const error = new Error(message);
error.metadata = metadata;
return error;
}
class ValidationError extends Error {
constructor(message) {
super(message);
this.name = "ValidationError";
}
}Xulosa
Error handling bizga kodning qaysi qismida xatolik borligini topishga va ularni barataraf qilgan holda dasturimiz doimiy ishlab turishga yordam beradi.