⊗jsSpExcPrb 150 of 294 menu

Kupitisha Madai Kutoka Nje katika JavaScript

Tuchunguze kizuizi catch cha kazi na JSON ya bidhaa:

catch (error) { if (error.name == 'SyntaxError') { alert('JSON ya bidhaa si sahihi'); } else if (error.name == 'ProductCostError') { alert('Bidhaa hana bei au kiasi'); } }

Kama unavyoona, tunashika madai mawili yaliyopangwa na sisi na kugibu kwa namna fulani. Lakini nini kitatokea ikiwa kutakuka dai lisilotarajiwa na sisi la aina nyingine? Katika hali hii, litaingia pia kwenye kizuizi catch, lakini hakutawezekana kugibu kwa sababu dai lenye aina tofauti halitaingia katika hata moja ya viwango vyetu.

Ninaposema, hapatakuwa na majibu yoyote, Namaanisha kwamba hakika hakuna: hata hitilafu haitaonekana kwenye koni. Njia yetu itakwenda tu bila kufanya kazi kwa ukimya.

Kwa hivyo kuna sheria ifuatayo: msimbo wako unapaswa kushika tu madai ambayo unajua jinsi ya kuyashinda. Ikiwa dai hailijulikani, basi linahitaji kupitishwa mbali kwa kutumia throw. Katika hali hii juu zaidi mtu mwenye ujua zaidi ataiweza au dai litaonekana kama hitilafu kwenye koni.

Wacha tusahihishe msimbo wetu:

catch (error) { if (error.name == 'SyntaxError') { alert('JSON ya bidhaa si sahihi'); } else if (error.name == 'ProductCostError') { alert('Bidhaa hana bei au kiasi'); } else { throw error; // kupitisha dai kutoka nje zaidi } }

Kuna msimbo ufuatao:

try { let arr = JSON.parse(json); for (let i = 0; i < arr.length; i++) { localStorage.setItem(i, arr[i]); } } catch (error) { if (error.name == 'QuotaExceededError') { alert('nafasi imekwisha kwenye hifadhi'); } if (error.name == 'SyntaxError') { alert('JSON si sahihi'); } }

Nini kimeshindwa katika msimbo huu? Irekebishe kuwa nafanasa zaidi.

rubyidnlda