⊗jsSpExcPrb 150 of 294 menu

JavaScript-те сынақтарды лақтыру

JSON өнімі тапсырмасының catch блогын қарастырайық:

catch (error) { if (error.name == 'SyntaxError') { alert('Өнімнің JSON-ы дұрыс емес'); } else if (error.name == 'ProductCostError') { alert('Өнімде баға немесе саны жоқ'); } }

Көріп отырғаныңыздай, біз жоспарланған екі сынақты ұстап, оларға бірден бір реакция жасаймыз. Бірақ біз жоспарламаған басқа түрдегі сынақ пайда болса не болады? Бұл жағдайда ол да catch блогына түседі, бірақ бұған ешқандай реакция болмайды, себебі басқа түрдегі сынақ біздің ешбір шарттық операторға түспейді.

Мен ешқандай реакция болмайды деп айтқанда, бұл шынымен де ешнәрсе: тіпті консольде қателік шығарылмайды. Біздің код жай ғана үнсіз жұмыс істемейді.

Сондықтан мынадай ереже бар: сіздің код тек қана қалай шешім табатынын білетін сынақтарды ұстауы керек. Егер сынақ белгісіз болса, онда оны throw көмегімен әрі қарай лақтыру керек. Бұл жағдайда оны жоғарыда не білетін біреусі ұстайды, неде сынақ қателік ретінде консольге шығарылады.

Кодты түзейік:

catch (error) { if (error.name == 'SyntaxError') { alert('Өнімнің JSON-ы дұрыс емес'); } else if (error.name == 'ProductCostError') { alert('Өнімде баға немесе саны жоқ'); } else { throw error; // сынақты әрі қарай лақтырамыз } }

Мына код берілген:

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('сақтауышта орын бітті'); } if (error.name == 'SyntaxError') { alert('дұрыс емес JSON'); } }

Бұл кодта не дұрыс емес? Оны тиімдірек етіп түзеңіз.

Қазақ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართული한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау