null ni qaytarish o'rniga istisno qilaylik , shunda biz muayyan nosozlik rejimlarini boshqarishimiz va xato haqida metama'lumotlarga ega bo'lishimiz uchun uni tuzatishni osonlashtiramiz.
// ... funktsiyasi parse ( tug'ilgan kun : string ) : Sana { ruxsat sana = yangi Sana ( tug'ilgan kun ) agar ( ! isValid ( sana )) {
tashlash yangi RangeError ( 'Sanani YYYY/MM/KK shaklida kiriting' )
} qaytish sana }
Endi biz ushbu kodni iste'mol qilganimizda, biz butun ilovamizni buzmasdan ehtiyotkorlik bilan ishlay olishimiz uchun istisnodan ehtiyot bo'lishimiz kerak:
// ... urinib ko'ring {
ruxsat bering sana = tahlil qilish ( so'rash ())
konsol . ma'lumot ( 'Sana' , sana . toISOString ())
} tutmoq ( e ) {
konsol . xato ( masalan , xabar )}
Ehtimol, biz boshqa istisnolardan ehtiyot bo'lishni xohlaymiz, shuning uchun biz barcha mumkin bo'lgan xatolarni jimgina yutib yubormaymiz:
// ... urinib ko'ring {
Istisnolarni tashlash
ruxsat bering sana = tahlil qilish ( so'rash ())
konsol . ma'lumot ( 'Sana' , sana . toISOString ())
} tutmoq ( e ) {
agar ( e misol RangeError ) { konsol . xato ( masalan , xabar )
} else { otish e
}
}
Biz xatoni aniqroq bir narsa uchun pastki sinfga kiritishni xohlashimiz mumkin, shunda boshqa muhandis tahlilni o'zgartirganda yoki boshqa RangeError larni tashlashni so'rasa , biz xatomiz va ular qo'shgan xato o'rtasida farqlay olamiz:
// ...
// Maxsus xato turlari
sinf InvalidDateFormatError uzaytiradi RangeError {} sinfi DateIsInTheFutureError uzaytiradi RangeError {}
funktsiyasi parse ( tug'ilgan kun : string ) : Sana { ruxsat sana = yangi Sana ( tug'ilgan kun ) agar ( ! isValid ( sana )) {
tashlash yangi InvalidDateFormatError ( 'Sanani YYYY/MM/KK shaklida kiriting' )
}
Do'stlaringiz bilan baham: |