পাইথনে ত্রুটি পরিচালনা
এই প্রবন্ধে, আমরা পাইথনে ত্রুটি পরিচালনার বিষয়টি ব্যাখ্যা করব।
YouTube Video
পাইথনে ত্রুটি পরিচালনা
পাইথনে ত্রুটি পরিচালনার জন্য মূলত try
, except
, else
, এবং finally
কীওয়ার্ডগুলি ব্যবহার করা হয়। এই গঠনগুলি ব্যবহার করে আপনি আপনার প্রোগ্রামে একটি ত্রুটি ঘটলে সঠিকভাবে প্রতিক্রিয়া জানাতে পারবেন। নিচে, আমরা এগুলির প্রতিটির ব্যবহার কীভাবে করবেন তা ব্যাখ্যা করব।
try
ব্লক
try
ব্লকের মধ্যে, আপনি কার্যকর করতে চান এমন কোড লিখুন। এই ব্লকের মধ্যে যদি কোনো ত্রুটি ঘটে, তবে প্রোগ্রাম কার্যকরীতা সাথে সাথে except
ব্লকে চলে যায়।
1try:
2 # Code that may raise an error (division by zero, for example)
3 #number = int(input("Enter a number: "))
4 number = int("abc")
5 result = 10 / number
6 print("Result:", result)
7except ValueError as e:
8 # Handle invalid input (e.g. non-numeric input)
9 print("Invalid input. Please enter a whole number.")
10 print(f"Value error: {e}")
11except ZeroDivisionError as e:
12 # Handle division by zero error
13 print("Cannot divide by zero!")
14 print(f"Zero division error: {e}")
try
ব্লকে ত্রুটি সনাক্ত করার এবংValueError
অথবাZeroDivisionError
ধরার মাধ্যমে যথাযথভাবে সেগুলি পরিচালনা করার একটি উদাহরণ এই কোডটি।
except
ব্লক
except
ব্লকের মধ্যে, আপনি এমন কোড লিখতে পারেন যা একটি নির্দিষ্ট ব্যতিক্রম (ত্রুটি) ঘটলে কার্যকর হবে। আপনি ঘটিত ত্রুটির ধরণের উপর ভিত্তি করে নির্দিষ্ট ব্যতিক্রমও ধরতে পারেন।
1try:
2 #number = int(input("Enter a number: "))
3 number = 0
4 result = 10 / number
5 print("Result:", result)
6except ZeroDivisionError as e:
7 print("Cannot divide by zero!")
8 print(f"Zero division error: {e}")
9except ValueError as e:
10 print("Input was not a valid integer.")
11 print(f"Value error: {e}")
- এই কোডটি একটি উদাহরণ যেখানে
try
ব্লকে কোনো ত্রুটি ঘটলেexcept
ব্লকে প্রতিটি আলাদা ধরণের exception-এর জন্য আলাদা ভাবে পরিচালনা করা হয়।
একসাথে একাধিক ত্রুটি পরিচালনা
যখন একাধিক ব্যতিক্রম শ্রেণী একই পরিচালনার লজিক ভাগ করে নিতে পারে, তখন একটি টুপল নির্দিষ্ট করুন।
1try:
2 my_list = [1, 2]
3 result = my_list[3] + 10 / 0
4except (IndexError, ZeroDivisionError) as e:
5 print(f"Exception occurred: {e}")
- এই কোডটি
IndexError
এবংZeroDivisionError
উভয়কে একসাথে ধরা এবং একইভাবে ব্যতিক্রমসমূহ পরিচালনা করার একটি উদাহরণ।
নিঃশর্তে ব্যতিক্রম ধরার প্রক্রিয়া
যদি আপনি একটি ব্লকে সমস্ত ধরণের ত্রুটি পরিচালনা করতে চান, তবে except
এর জন্য আর্গুমেন্ট বাদ দিন।
1try:
2 # This code might cause some exception
3 result = "10" + 5 # TypeError
4except Exception as e:
5 print("Unexpected error")
- তবে, সব exception নির্বিশেষে না ধরে নির্দিষ্ট exception পরিচালনা করা বাগ খোঁজা এবং ডিবাগ করার জন্য বেশি সহায়ক। সম্ভব হলে, শুধুমাত্র প্রত্যাশিত exception যেমন
ValueError
বাTypeError
স্পষ্টভাবে পরিচালনা করা আপনার কোডের স্থায়িত্ব বাড়াবে।
else
ব্লক
else
ব্লক শুধুমাত্র কার্যকর হয় যদি try
ব্লকের মধ্যে কোনো ত্রুটি না ঘটে।
1try:
2 #number = int(input("Enter a number: "))
3 number = 5
4 result = 10 / number
5except ZeroDivisionError as e:
6 print("Cannot divide by zero!")
7 print(f"Zero division error: {e}")
8except ValueError as e:
9 print("Input was not a valid integer.")
10 print(f"Value error: {e}")
11else:
12 # This block will execute only if no exceptions were raised
13 print("Result:", result)
- এই কোডটি এমন একটি উদাহরণ যেখানে
try
ব্লকে কোনো ত্রুটি না ঘটলে শুধুelse
ব্লকটি প্রয়োগ হয়।
finally
ব্লক
finally
ব্লকটি এমন কোড লিখতে ব্যবহৃত হয় যা সর্বদা শেষের দিকে কার্যকর করবে, তা try
ব্লকে ত্রুটি ঘটুক বা না ঘটুক। এটি সম্পদ মুক্ত করা বা পরিষ্কারের কাজ সম্পন্ন করার জন্য কার্যকর।
1try:
2 #number = int(input("Enter a number: "))
3 number = int("abc")
4 result = 10 / number
5except ZeroDivisionError as e:
6 print("Cannot divide by zero!")
7 print(f"Zero division error: {e}")
8except ValueError as e:
9 print("Input was not a valid integer.")
10 print(f"Value error: {e}")
11else:
12 # This block will execute only if no exceptions were raised
13 print("Result:", result)
14finally:
15 # This block will always execute, regardless of whether an exception was raised
16 print("Execution completed.")
- এই কোডটি দেখায় যে exception ঘটুক বা না ঘটুক
finally
ব্লকটি অবশ্যই কার্যকর হয়—এটি তার একটি উদাহরণ।
raise
কীওয়ার্ড
বিদ্যমান কোডে নির্দিষ্ট শর্ত পূরণ না হলে raise
কীওয়ার্ড ব্যবহার করে ব্যতিক্রম উত্থাপন করাও সম্ভব।
1def divide(a, b):
2 if b == 0:
3 raise ValueError("Cannot divide by zero.")
4 return a / b
5
6try:
7 result = divide(10, 0)
8except ValueError as e:
9 print(f"Error: {e}")
- এই কোডটি দেখায় কিভাবে কোনো শর্ত পূরণ না হলে স্পষ্টভাবে
raise
কীওয়ার্ড ব্যবহার করে exception তোলা যায়।
উপসংহার
এইভাবে ত্রুটি পরিচালনা করে, আপনি প্রোগ্রামের ক্র্যাশ হওয়া প্রতিরোধ করতে পারেন, ব্যবহারকারীকে সামঞ্জস্যপূর্ণ বার্তা দেখাতে পারেন, এবং পরবর্তী প্রোগ্রাম প্রসেসিং চালিয়ে যেতে পারেন।
আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।