এরর হ্যান্ডলিং (Error Handling)
কেন এরর বা ভুল হয় (এবং কেন এটি স্বাভাবিক) (Why Errors Happen (And Why That's OK))
প্রোগ্রামিংয়ে এরর বা ভুল হওয়াটা খুবই স্বাভাবিক একটি ব্যাপার। কখনো ব্যবহারকারী হয়তো অপ্রত্যাশিত কিছু টাইপ করে বসলো, কখনো সার্ভার কাজ করা বন্ধ করে দিলো, অথবা হয়তো কোথাও কোনো ফাইলই খুঁজে পাওয়া গেল না। ভালো কোড কখনোই শতভাগ ভুলমুক্ত হয় না — বরং এটি ভালোভাবে সব ভুলগুলোকে সামাল দেয়।
এরর হ্যান্ডলিং বা ভুল সামাল দেওয়ার ব্যাপারটিকে অনেকটা ট্রাপিজ (trapeze) খেলাতে জালের ব্যবহারের মতো ভাবতে পারেন। অ্যাক্রোব্যাট (আপনার কোড) অনেক উঁচুতে দারুণ সব চমক দেখায়, আর জাল (এরর হ্যান্ডলিং) তারা পড়ে গেলে নিচে থেকে ধরে ফেলে বা রক্ষা করে। এই নিরাপত্তা জাল না থাকলে, একটিমাত্র ভুলের কারণে পুরো খেলাই ভেস্তে যেতে পারে।
জাভাস্ক্রিপ্টে বেশ কয়েকটি নিজস্ব বা বিল্ট-ইন (built-in) এরর টাইপ রয়েছে:
TypeError— এমন কোনো কাজ করা যা কোনো নির্দিষ্ট ভ্যালুর টাইপ সমর্থন করে না (যেমনnull.toString()কল করা)ReferenceError— এমন কোনো ভ্যারিয়েবল ব্যবহার করা যার আসলেই কোনো অস্তিত্ব নেইSyntaxError— এমন কোনো কোড লেখা যা জাভাস্ক্রিপ্ট বুঝতে বা পার্স (parse) করতে পারে নাRangeError— নির্ধারিত সীমার বাইরে থাকা কোনো সংখ্যা হলেURIError— ভুল URI এনকোডিং হলে
Try / Catch / Finally
নিজের মতো করে এরর ছোঁড়া (Throwing Your Own Errors)
আপনি শুধু জাভাস্ক্রিপ্টের বিল্ট-ইন এররগুলোই ধরতে বা ক্যাচ (catch) করতে পারবেন এমনটা নয় — আপনি চাইলে নিজের মতো করেও এরর ছুঁড়তে (throw) পারেন। আপনার কোডে কোনো সমস্যা হলে তা বোঝানোর জন্য throw ব্যবহার করুন। এটিকে অনেকটা কোথাও আগুন লাগলে অ্যালার্ম বাজানোর সাথে তুলনা করা যায়।
আপনি চাইলে যেকোনো কিছু ছুঁড়তে পারেন (যেমন একটি স্ট্রিং, বা একটি সংখ্যা), তবে সবচেয়ে ভালো উপায় হলো একটি Error অবজেক্ট ছোঁড়া। কারণ এতে একটি স্ট্যাক ট্রেস (stack trace) থাকে — যা ঠিক কোন জায়গা থেকে এররের সৃষ্টি হয়েছে, তার একটি পরিষ্কার ধারণা দেয়।
নিজেদের তৈরি এরর এবং ভ্যালিডেশন (Custom Errors & Validation)
এরর সামলানোর কিছু সাধারণ উপায় বা প্যাটার্ন (Error Handling Patterns)
বাস্তবে কাজ করার সময় আপনি প্রায়ই কোডের এই ধরনের প্যাটার্নগুলো দেখতে পাবেন:
- ক্যাচ করে সমাধান করা (Catch and recover) — এররটিকে সামাল দিন এবং বিকল্প কোনো উপায় বা ফলব্যাকের (fallback) মাধ্যমে কাজ চালিয়ে যান
- ক্যাচ করা এবং লগ করা (Catch and log) — ত্রুটি বা ডিবাগিং (debugging) খোঁজার সুবিধার জন্য এররটি লগ করুন, কিন্তু অ্যাপের কাজ চলতে দিন
- ক্যাচ করা এবং পুনরায় ছোঁড়া (Catch and re-throw) — কেবল আপনার জানা এররগুলো ক্যাচ করুন এবং বাকিগুলোকে আবার ছুঁড়ে দিন
- গার্ড ক্লজ বা Guard clauses — সমস্যাগুলো এররে পরিণত হওয়ার আগেই
ifস্টেটমেন্ট ব্যবহার করে সেগুলো পরীক্ষা করে নিন
সহজ কথায় মনে রাখবেন: যেসব কোড বাইরের কোনো মাধ্যমের সাথে যোগাযোগ করে (যেমন নেটওয়ার্ক রিকোয়েস্ট, ফাইলের কাজ, JSON পার্সিং, ব্যবহারকারীর ইনপুট) সেসব ক্ষেত্রে try/catch ব্যবহার করুন। তবে নিজের লেখা লজিকের ক্ষেত্রে, গার্ড ক্লজ এবং ভ্যালিডেশন ব্যবহার করাই উত্তম।
রিয়েল-ওয়ার্ল্ড বা বাস্তব কাজের প্যাটার্ন: নিরাপদ JSON পার্সিং
ছোট কুইজ
পড়া চালিয়ে যান