Lesson ১১৭ মিনিট পড়া
এরর হ্যান্ডলিং (Error Handling)
যখন কোনো কিছু ভুল হয় — এবং তা হবেই — তখন তার জন্য প্রস্তুত থাকুন
কেন এরর হয় (এবং এটি স্বাভাবিক) (Why Errors Happen - And That's OK)
প্রোগ্রামিংয়ে এরর বা ভুল হওয়াটা খুবই সাধারণ একটি ব্যাপার — ঠিক যেমন রাস্তায় গর্ত থাকা। মূল প্রশ্নটি এটা নয় যে "আমি কি গর্তে পড়ব?" বরং প্রশ্ন হলো "গর্তে পড়লে আমি কি সেটার জন্য প্রস্তুত?" পাইথনের এরর হ্যান্ডলিং আপনার প্রোগ্রামটিকে ক্র্যাশ করে বন্ধ হয়ে যাওয়ার বদলে, ভুলগুলোকে সুন্দরভাবে সামলানোর সুযোগ দেয়।
পাইথনে দুই ধরনের সমস্যা দেখা দেয়:
- সিনট্যাক্স এরর (Syntax errors) — আপনি এমন কিছু টাইপ করেছেন যা পাইথন বুঝতে পারছে না। অনেকটা রেসিপিতে ভুল বানানের মতো:
prnt("hello")। পাইথন এগুলো কোড রান করার আগেই ধরে ফেলে। - এক্সেপশন (Exceptions) — আপনার লেখা কোডটি পাইথন বুঝতে পারে, কিন্তু রান করার সময় (runtime) কোনো সমস্যা হয়েছে: যেমন শূন্য দিয়ে ভাগ করা, এমন কোনো ফাইল খোলার চেষ্টা করা যার কোনো অস্তিত্ব নেই, বা লিস্টের এমন কোনো ইনডেক্সে প্রবেশ করার চেষ্টা করা যা লিস্টের সীমানার বাইরে।
সাধারণ এক্সেপশনসমূহ (Common Exceptions)
Try / Except / Else / Finally (Try / Except / Else / Finally)
try/except ব্লক হলো আপনার সেফটি নেট বা সুরক্ষাজাল। এর চারটি অংশ যেভাবে কাজ করে:
try— ঝুঁকিপূর্ণ কোডটি এখানে রাখুন। "এটি চেষ্টা করুন, এবং যদি এটি সমস্যা করে..."except— "...সেই সমস্যাটি ধরুন এবং সামলান।" আপনি নির্দিষ্ট কোনো এক্সেপশন বা সবগুলো এক্সেপশনই ধরতে পারেন।else— এটি কেবলমাত্র তখনই রান করে যখনtryকোনো এরর ছাড়াই সফল হয়। "যদি সবকিছু ঠিকঠাক থাকে, তবে এটাও করুন।"finally— এরর হোক বা না হোক, এটি যাই হোক না কেন রান করবেই। কিছু ক্লিনআপ বা পরিষ্কার করার কাজের জন্য এটি দারুণ। "কাজ শেষ হলে সবসময় এটি করুন।"
পূর্ণাঙ্গ Try/Except প্যাটার্ন (The Full Try/Except Pattern)
এক্সেপশন রেইজ করা (Raising Exceptions)
মাঝেমধ্যে আপনি নিজে থেকেই ইচ্ছা করে কোনো এরর বা ত্রুটি ঘটাতে বা রেইজ (raise) করতে চাইতে পারেন। হয়তো কেউ আপনার ফাংশনে কোনো ভুল ডেটা পাস করেছে এবং আপনি একটি স্পষ্ট মেসেজ দিয়ে কাজটিকে শুরুতেই থামিয়ে দিতে চান। এর জন্য raise ব্যবহার করুন।
রেইজিং এবং কাস্টম এক্সেপশন (Raising & Custom Exceptions)
বেস্ট প্র্যাক্টিসেস (Best Practices)
এরর হ্যান্ডলিংয়ের কিছু সুবর্ণ নিয়ম হলো:
- নির্দিষ্ট করে উল্লেখ করুন —
except:লিখে সবকিছু না ধরে, নির্দিষ্টভাবেValueErrorধরুন। একটি ফাঁকা except সবকিছু ধরে ফেলে, যার মধ্যে কীবোর্ড ইন্টারাপ্ট বা সিস্টেম এক্সিটও থাকে। এটি প্রায় কখনোই আমাদের কাম্য নয়। - এররকে নীরব করে রাখবেন না — কখনোই
except: passলিখবেন না। যদি কোনো ভুল হয়, তবে আপনার সেটি জানা উচিত। elseব্যবহার করুন — যেসব কোড কেবল সফল হলে চলা উচিত, সেগুলোtryএর বদলেelseএ রাখুন। এতে আপনি ভুল করে সফল হওয়া কোডের এরর ধরবেন না।- LBYL এর চেয়ে EAFP ভালো — পাইথনে একটি কথা খুব পরিচিত, "অনুমতি চাওয়ার চেয়ে ক্ষমা চাওয়া সহজ (Easier to Ask Forgiveness than Permission)"। প্রতিটি সম্ভাব্য শর্ত আগে থেকেই যাচাই (LBYL) করার চেয়ে, সরাসরি কাজটি করার চেষ্টা করুন এবং এরর হলে তা সামলে (catch) নিন।
LBYL এর চেয়ে EAFP ভালো (EAFP vs. LBYL)
Note:
try/except-কে সিনেমার স্টান্ট ডাবলের (stunt double) মতো চিন্তা করুন। আপনি স্টান্ট ডাবলকে (try ব্লক) বিপজ্জনক কাজগুলো করতে দেন, আর যদি কোনো সমস্যা হয়, সেফটি ক্রু বা নিরাপত্তা দল (except ব্লক) তা সামলে নেয় — যাতে আপনার সিনেমা (আপনার প্রোগ্রাম) চলতে থাকে।চ্যালেঞ্জ
ছোট কুইজ
পড়া চালিয়ে যান