PHP তে Exception Handling part -1

পিএইচপি  মূলত কম্পাইল করে যখন কোন কোড রান করা হয়। সি, সি++ এ আমরা যেমন আগে বিল্ড করে পরে রান করি পিএইচপি তা করেনা। যখন কোন কোড রান করানো হয় তখনি এটা বিল্ড হয় আর রান হয়। তাই সি, সি++ এ আমরা যেমন বিল্ড করার সময় এরর গুলা পেয়ে যাই পিএইচপি তে পাই যখন কোড তা রান করি তখন। তাই রান করার আগে এরর কি আছে বলা মুশকিল। এখন আলহামদুলিল্লাহ্‌ ধরে নিলাম আমাদের কোডে কোন এরর নাই। কিন্তু এমন কিছু ব্যাপার ঘটতে পারে যেটা আমরা হয়তো আগে ভাবিনাই। এটা কোন ফাইল, ফাংশন বা ক্লাস মিছিং এর ব্যাপার না, ঐটা হলে আপনি এরর নোটিশ পাইতেন।

এক্সেপ্সন হ্যান্ডলিং সম্বন্ধে যদি বলি, কোন প্রোগ্রাম এ যদি একটি (নির্দিষ্ট) ব্যতিক্রমী শর্ত ঘটে তখন কোড এক্সিকিউশন স্বাভাবিক প্রবাহ পরিবর্তন করাটাই হচ্ছে এক্সেপ্সন হ্যান্ডলিং. এইযে বললাম ব্যতিক্রমী শর্ত, এইটাই হচ্ছে এক্সেপ্সন। মনে করেন আপনি এমন কোন ফাংশন লিখলেন যেখানে ইউজার এর দেয়া ইনপুট এ মাণ  টা অসঙ্গায়িত হয় বা এমন কোন ভ্যালিড মাণ না থাকে এমন ব্যাপার গুলা আসলে এক্সেপ্সন।

 

রান টাইমে এক্সেপ্সন আর এরর এর মধ্যে যদি পার্থক্য বলি তাহলে বলতে হয়, যদি কখনও এরর আসে তখন পিএইচপি আপনাকে একটা এরর নোটিশ দিয়ে কোড এক্সিকিউসন বন্ধ করে দিবে। ঐ এরর এর জায়গা থেকে সে আর সামনে আগাবেনা। কিন্তু এক্সেপ্সন যদি কখনও হয়, পিএইচপি একটা ওয়ার্নিং মেসেজ দিবে কিন্তু এক্সিকিউসন বন্ধ করবেনা। সে যেভাবে বাকি কোড আছে সেভাবে রান করে যাবে। আর কোন লাইনে আপনার এরর সেটা বলে দিবে। তবে ভাবার কিছু নাই, এরর আর এক্সেপ্সন দুইটাই হ্যান্ডেল করা যায়।

এক্সেপ্সন হ্যান্ডলিং কেন দরকার যদি বলতে হয়, এক্সেপ্সন যদি আপনার কোডে থাকে আপনার কোড কিন্তু রান করবে তবে একটা ওয়ার্নিং ম্যাসেজ সহ। একটা ফাইনাল প্রোডাক্ট এ যদি এমন ওয়ার্নিং দেখে, ইউজার কিন্তু খুব একটা খুশি হবেনা। আর ব্যাপারটা আসলেই দেখতেও ভালো লাগবেনা। সুতরাং আগে থেকেই কি কি এক্সেপ্সন হতে পারে তার একটা হিসাব করে ফেলাটা ভালো। তাহলে আগেই এক্সেপ্সন হ্যান্ডলিং করে নিলে পরে আর আপনার ফাইনাল প্রডাক্ট এ এক্সেপ্সন এর কোন ওয়ার্নিং দেখাবেনা। কারণ আপনি আগেই সেগুলো সমাধান করে ফেলছেন। এইটাই একটা সাধারণ ডেভেলপার আর একজন এক্সপার্ট এর মধ্যে পার্থক্য তৈরি করে দেয়।