⊗jsSpExcPrb 150 of 294 menu

জাভাস্ক্রিপ্টে এক্সেপশন থ্রো করা

JSON পণ্যের টাস্কের catch ব্লকটি বিবেচনা করুন:

catch (error) { if (error.name == 'SyntaxError') { alert('অবৈধ JSON পণ্য'); } else if (error.name == 'ProductCostError') { alert('পণ্যের দাম বা পরিমাণ নেই'); } }

আপনি দেখতে পাচ্ছেন, আমরা আমাদের পরিকল্পিত দুটি এক্সেপশন ধরছি এবং সেগুলোর প্রতি সাড়া দিচ্ছি। কিন্তু কী হবে যদি আমাদের অজানা অন্য ধরনের একটি এক্সেপশন ঘটে? সেই ক্ষেত্রে সেটিও catch ব্লকে পড়বে, কিন্তু এর প্রতি কোনো সাড়া দেওয়া হবে না, কারণ অন্য ধরনের এক্সেপশন আমাদের কোনো if-এই পড়বে না।

যখন আমি বলি কোনো সাড়া দেওয়া হবে না, তার মানে আমি বোঝাতে চাই, সত্যিই কিছুই না: এমনকি কনসোলে কোনো ত্রুটিও দেখা যাবে না। আমাদের কোড শুধু নিঃশব্দে কাজ করবে না।

সুতরাং নিম্নলিখিত নিয়মটি রয়েছে: আপনার কোড শুধুমাত্র সেই এক্সেপশনগুলো ধরবে যেগুলো মোকাবেলা করতে এটি জানে। যদি এক্সেপশন অজানা হয়, তবে এটিকে 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'); } }

এই কোডটির কী সমস্যা? এটিকে আরও ভালোভাবে সংশোধন করুন।

enswkkuzlro