DEV Community

Cover image for পাইথন এরর হ্যান্ডলিং এবং ডিবাগিং: সমস্যা মোকাবিলা করা
Shafi Rayhan
Shafi Rayhan

Posted on

পাইথন এরর হ্যান্ডলিং এবং ডিবাগিং: সমস্যা মোকাবিলা করা

ভূমিকা

পাইথন শেখার জার্নিতে এসে আরেকটা গুরুত্বপূর্ণ ধাপে পৌঁছেছি! আজ আমরা এরর হ্যান্ডলিং এবং ডিবাগিং নিয়ে কথা বলব। কোড লিখতে গেলে ভুল হবেই—মূল কথা হলো সেগুলো কীভাবে সামলাবেন। এই পোস্টে আপনি শিখবেন:

  • try, except, finally, এবং else ব্লক ব্যবহার।
  • বিভিন্ন ধরনের এরর এবং কাস্টম এরর।
  • ডিবাগিং টেকনিক এবং টুলস।
  • একটা প্রজেক্ট যেখানে ইনপুট চেক করব (যেমন ইমেইল)।

এরর হ্যান্ডলিং শিখলে আপনার প্রোগ্রাম ক্র্যাশ করবে না এবং ডিবাগিং শিখলে ভুল খুঁজে ঠিক করা সহজ হবে। চলুন শুরু করি!


এরর হ্যান্ডলিং কী?

প্রোগ্রামে এরর হলে সেটা ধরে সঠিকভাবে সামলানোই হলো এরর হ্যান্ডলিং। পাইথনে try-except দিয়ে এটা করা হয়।

try, except, finally, এবং else

  1. try: এখানে সমস্যা হতে পারে এমন কোড লেখা হয়।
  2. except: এরর হলে কী করতে হবে তা বলে।
  3. finally: এরর হোক বা না হোক, এটা সবসময় চলবে।
  4. else: এরর না হলে এটা চলবে।

উদাহরণ:

try:
    num = int(input("একটা সংখ্যা লিখুন: "))
except ValueError:
    print("ভুল! সংখ্যা লিখতে হবে।")
else:
    print(f"আপনি লিখেছেন: {num}")
finally:
    print("প্রোগ্রাম শেষ।")
Enter fullscreen mode Exit fullscreen mode
  • ইনপুট যদি “abc” হয়: ValueError ধরবে।
  • ইনপুট যদি “5” হয়: else চলবে।

আউটপুট (সংখ্যা হলে):

একটা সংখ্যা লিখুন: 5
আপনি লিখেছেন: 5
প্রোগ্রাম শেষ।
Enter fullscreen mode Exit fullscreen mode

বিভিন্ন ধরনের এরর এবং কাস্টম এরর

সাধারণ এরর

  • ValueError: ভুল টাইপের ইনপুট (যেমন int("abc"))।
  • FileNotFoundError: ফাইল না পাওয়া গেলে।
  • ZeroDivisionError: শূন্য দিয়ে ভাগ করলে।
  • IndexError: লিস্টে ভুল ইনডেক্স ব্যবহার।

উদাহরণ:

try:
    result = 10 / 0
except ZeroDivisionError:
    print("শূন্য দিয়ে ভাগ করা যায় না!")
Enter fullscreen mode Exit fullscreen mode

কাস্টম এরর

নিজের এরর তৈরি করতে raise ব্যবহার করা যায়:

age = int(input("আপনার বয়স লিখুন: "))
if age < 0:
    raise ValueError("বয়স ঋণাত্মক হতে পারে না!")
print(f"আপনার বয়স: {age}")
Enter fullscreen mode Exit fullscreen mode
  • বয়স -৫ হলে: ValueError উঠবে।

কেন দরকার? নিজের শর্ত অনুযায়ী এরর তৈরি করতে।


ডিবাগিং টেকনিক এবং টুলস

ডিবাগিং মানে কোডের ভুল খুঁজে ঠিক করা।

সাধারণ টেকনিক

  1. print() ব্যবহার: কোডে কী হচ্ছে দেখতে।
   num = "abc"
   print("ইনপুট চেক করছি:", num)
   result = int(num)  # এখানে এরর হবে
Enter fullscreen mode Exit fullscreen mode
  1. কোড ধাপে ধাপে চেক: ছোট অংশ চালিয়ে দেখুন।
  2. কমেন্ট করে টেস্ট: সমস্যার জায়গা বাদ দিয়ে চালান।

টুলস

  • VSCode Debugger:
    • ব্রেকপয়েন্ট সেট করে কোড ধাপে ধাপে চালান।
    • ভ্যারিয়েবলের মান দেখতে পারেন।
  • Python’s pdb: কমান্ড লাইনে ডিবাগ করা।
  import pdb
  num = 10
  pdb.set_trace()  # এখানে থামবে
  result = num / 0
Enter fullscreen mode Exit fullscreen mode

কেন দরকার? ভুল দ্রুত খুঁজে ঠিক করতে।


প্রজেক্ট: ইমেইল চেকার প্রোগ্রাম

চলুন একটা প্রোগ্রাম বানাই যেটা ইমেইল ঠিক আছে কি না চেক করবে।

ধাপগুলো:

  1. নতুন ফাইল বানান, নাম দিন email_checker.py
  2. এই কোড লিখুন:
   def is_valid_email(email):
       if "@" not in email or "." not in email:
           raise ValueError("ইমেইল-এ @ এবং . থাকতে হবে!")
       if len(email) < 6:
           raise ValueError("ইমেইল খুব ছোট!")
       return True

   while True:
       try:
           user_email = input("আপনার ইমেইল লিখুন (বা 'exit' লিখে বের হন): ")
           if user_email.lower() == "exit":
               print("বাই বাই!")
               break
           is_valid_email(user_email)
           print(f"ইমেইল ঠিক আছে: {user_email}")
       except ValueError as e:
           print(f"ভুল: {e}")
       finally:
           print("চেক শেষ।\n")
Enter fullscreen mode Exit fullscreen mode
  1. টার্মিনালে চালান:
   python email_checker.py
Enter fullscreen mode Exit fullscreen mode
  1. আউটপুট দেখুন:
   আপনার ইমেইল লিখুন (বা 'exit' লিখে বের হন): abc
   ভুল: ইমেইল-এ @ এবং . থাকতে হবে!
   চেক শেষ।

   আপনার ইমেইল লিখুন (বা 'exit' লিখে বের হন): rahim@example.com
   ইমেইল ঠিক আছে: rahim@example.com
   চেক শেষ।
Enter fullscreen mode Exit fullscreen mode

কোড ব্যাখ্যা:

  • is_valid_email(): ইমেইল চেক করে, ভুল হলে এরর উঠায়।
  • try-except: ভুল ধরে মেসেজ দেখায়।
  • finally: প্রতিবার চেক শেষে চলে।
  • "exit": লুপ থেকে বের হওয়ার উপায়।

এই প্রজেক্টে এরর হ্যান্ডলিং-এর শক্তি বোঝা যায়।


হোমওয়ার্ক: লগইন সিস্টেম সিমুলেশন

আপনার কাজ হলো একটা লগইন সিস্টেম বানানো যেটা ভুল ইনপুটের জন্য এরর মেসেজ দেবে।

ধাপগুলো:

  1. ফাইল বানান, নাম দিন login_system.py
  2. এই কোড লিখুন:
   # ডামি ডেটা
   users = {"rahim": "pass123", "ria": "abc456"}

   def login(username, password):
       if username not in users:
           raise ValueError("ইউজারনেম পাওয়া যায়নি!")
       if users[username] != password:
           raise ValueError("পাসওয়ার্ড ভুল!")
       return True

   while True:
       try:
           username = input("ইউজারনেম লিখুন: ")
           password = input("পাসওয়ার্ড লিখুন: ")
           login(username, password)
           print(f"লগইন সফল! স্বাগতম, {username}!")
           break
       except ValueError as e:
           print(f"লগইন ব্যর্থ: {e}")
       except KeyboardInterrupt:
           print("প্রোগ্রাম বন্ধ করা হয়েছে।")
           break
Enter fullscreen mode Exit fullscreen mode
  1. চালান:
   python login_system.py
Enter fullscreen mode Exit fullscreen mode
  1. উদাহরণ:
   ইউজারনেম লিখুন: ria
   পাসওয়ার্ড লিখুন: wrong
   লগইন ব্যর্থ: পাসওয়ার্ড ভুল!
   ইউজারনেম লিখুন: rahim
   পাসওয়ার্ড লিখুন: pass123
   লগইন সফল! স্বাগতম, rahim!
Enter fullscreen mode Exit fullscreen mode

কোড ব্যাখ্যা:

  • users: ডিকশনারিতে ইউজারনেম-পাসওয়ার্ড।
  • login(): ইনপুট চেক করে, ভুল হলে এরর উঠায়।
  • try-except: ভুল ধরে মেসেজ দেখায়।
  • KeyboardInterrupt: Ctrl+C চাপলে বন্ধ হয়।

উপসংহার

আজ আমরা শিখলাম:

  • try, except, finally, else দিয়ে এরর হ্যান্ডলিং।
  • বিভিন্ন এরর এবং কাস্টম এরর তৈরি।
  • ডিবাগিং টেকনিক।
  • ইমেইল চেকার প্রোগ্রাম।

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

প্রশ্ন:

  1. এরর হ্যান্ডলিং কি বোঝা সহজ লেগেছে?
  2. লগইন সিস্টেমে কি কিছু যোগ করতে চান?
  3. ডিবাগিং-এ কোন টেকনিক বেশি পছন্দ হয়েছে?

Top comments (0)

👋 Kindness is contagious

DEV is better (more customized, reading settings like dark mode etc) when you're signed in!

Okay