Null qaytarilmoqda
Biz foydalanuvchidan tug'ilgan kunini so'raydigan dastur yozamiz, keyin uni Date ob'ektiga ajratamiz:
funktsiyasi ask() {
qaytish so'rov ( 'Tug'ilgan kuningiz qachon?' ) }
funktsiyasi parse ( tug'ilgan kun : string ) : Sana {
qaytish yangi Sana ( tug'ilgan kun ) }
ruxsat bering sana = tahlil qilish ( so'rash ())
konsol . ma'lumot ( 'Sana' , sana . toISOString ())
Ehtimol, foydalanuvchi kiritgan sanani tasdiqlashimiz kerak - bu shunchaki matnli so'rov, axir:
// ... funktsiyasi parse ( tug'ilgan kun : string ) : Sana | null {
ruxsat bering sana = yangi Sana ( tug'ilgan kun ) agar ( ! isValid ( sana )) { qaytish null
} qaytish sana }
// Berilgan sananing haqiqiyligini tekshiradi isValid ( sana : Sana ) {
qaytish Ob'ekt . prototip . toString . qo'ng'iroq ( sana ) === '[ob'ekt sanasi]'
&& ! Raqam . isNaN ( sana . getTime ())
}
uni ishlatishdan oldin natija null yoki yo'qligini tekshirishga majbur bo'lamiz :
// ... ruxsat bering sana = tahlil qilish ( so'rash ())
agar ( sana ) {
konsol . ma'lumot ( 'Sana' , sana . toISOString ())
} boshqa {
konsol . xato ( "Ba'zi sabablarga ko'ra sanani tahlil qilishda xatolik" ) }
Nullni qaytarish xatolarni xavfsiz usulda hal qilishning eng oson usuli hisoblanadi. Yaroqli foydalanuvchi kiritish natijasida Sana , noto‘g‘ri foydalanuvchi kiritishi null va tizim turi bizni ikkalasini ham ishlaganimizni tekshiradi.
Biroq, bu usulda biz ba'zi ma'lumotlarni yo'qotamiz , tahlil nima uchun operatsiya aynan nima uchun muvaffaqiyatsiz bo'lganini aytmaydi, bu xatoni tuzatish uchun qaysi muhandis jurnallarimizni tarashi kerakligidan qat'i nazar, shuningdek, qalqib chiquvchi foydalanuvchi ham borligini aytadi. “Sanani YYYY/MM/KK shaklida kiriting” kabi aniq, amalda bajariladigan xato emas, balki “Ba’zi sabablarga ko‘ra sanani tahlil qilishda xatolik” edi.
Nullni qaytarish ham qiyin: har bir operatsiyadan so'ng nullni tekshirish kerak, siz joylashtirish va zanjir operatsiyalarini boshlaganingizda batafsil bo'lishi mumkin.
Do'stlaringiz bilan baham: |