রুবি প্রোগ্রামিং ভাষায় File Modes এবং Exception Handling দুটি গুরুত্বপূর্ণ ধারণা, যা ফাইল সিস্টেমের সাথে কাজ করার সময় এবং এর মধ্যে ত্রুটি (error) মোকাবিলা করার সময় ব্যবহৃত হয়। এখানে আমরা File Modes এবং Exception Handling এর ধারণা, ব্যবহার এবং তাদের গুরুত্ব আলোচনা করব।
১. File Modes (ফাইল মোডস)
রুবি ভাষায় ফাইলের সাথে কাজ করার জন্য File modes ব্যবহার করা হয়, যা নির্ধারণ করে যে ফাইলটি read, write, বা append মোডে খোলা হবে এবং কিভাবে তার মধ্যে ডেটা লেখা বা পড়া হবে।
ফাইল মোডের ধরন:
r: ফাইলটি read-only মোডে খোলা হবে। যদি ফাইলটি না থাকে, তাহলে ত্রুটি দেখাবে।w: ফাইলটি write মোডে খোলা হবে। যদি ফাইলটি আগে থেকে থাকে, তাহলে তার পুরনো ডেটা মুছে নতুন ডেটা লেখা হবে। যদি ফাইলটি না থাকে, তাহলে নতুন ফাইল তৈরি হবে।a: ফাইলটি append মোডে খোলা হবে। অর্থাৎ, পুরনো ডেটা মুছে ফেলা হবে না, নতুন ডেটা ফাইলের শেষে যোগ হবে। যদি ফাইলটি না থাকে, তাহলে নতুন ফাইল তৈরি হবে।r+: ফাইলটি read-write মোডে খোলা হবে। অর্থাৎ, ফাইলটি পড়া এবং লেখা উভয়ের জন্য খোলা থাকবে। যদি ফাইলটি না থাকে, তাহলে ত্রুটি দেখাবে।w+: ফাইলটি write-read মোডে খোলা হবে। যদি ফাইলটি আগে থাকে, তাহলে তার পুরনো ডেটা মুছে নতুন ডেটা লেখা হবে, এবং ফাইলটি পড়া যাবে। যদি ফাইলটি না থাকে, তাহলে নতুন ফাইল তৈরি হবে।a+: ফাইলটি append-read মোডে খোলা হবে। পুরনো ডেটা মুছে ফেলা হবে না, নতুন ডেটা যোগ হবে, এবং ফাইলটি পড়া যাবে।
ফাইল খোলা:
ফাইল খোলার জন্য রুবিতে File.open মেথড ব্যবহৃত হয়, এবং এতে ফাইল মোড প্যারামিটার হিসেবে দেওয়া হয়।
উদাহরণ:
# রিড মোডে ফাইল খোলা
file = File.open("example.txt", "r")
puts file.read
file.close
# রাইট মোডে ফাইল খোলা
file = File.open("example.txt", "w")
file.write("Hello, Ruby!")
file.close
# অ্যাপেন্ড মোডে ফাইল খোলা
file = File.open("example.txt", "a")
file.puts("Appending some text.")
file.closeএখানে, প্রথমে ফাইলটি read মোডে খোলা হয়েছে এবং তার কনটেন্ট পড়া হয়েছে, পরে write মোডে ফাইল খোলা হয়েছে এবং তার মধ্যে কিছু লেখা হয়েছে, এবং শেষে append মোডে ফাইল খোলা হয়েছে এবং তার শেষে নতুন কিছু লেখা হয়েছে।
২. Exception Handling (এক্সসেপশন হ্যান্ডলিং)
Exception Handling হচ্ছে একটি প্রোগ্রামিং কৌশল যার মাধ্যমে আপনি কোডে যে কোনো ধরনের ত্রুটি (error) বা ব্যতিক্রম (exception) ঘটে গেলে সেটি সঠিকভাবে পরিচালনা করতে পারেন। রুবিতে Exception Handling এর জন্য begin...rescue...end ব্লক ব্যবহৃত হয়। এটি কোডের ত্রুটি ম্যানেজমেন্ট এবং ত্রুটির কারণে প্রোগ্রাম ক্র্যাশ হওয়া আটকাতে সহায়তা করে।
Syntax:
begin
# কোড যা ত্রুটি ঘটাতে পারে
rescue ExceptionType => e
# ত্রুটি ধরা হলে কোড
else
# যদি কোন ত্রুটি না ঘটে
ensure
# সবশেষে যাই হোক না কেন, এই কোডটি চালানো হবে
end১. begin...rescue: সাধারণ ত্রুটি ধরার জন্য ব্যবহৃত হয়।
২. else: যদি কোনো ত্রুটি না ঘটে, তাহলে এই অংশটি কার্যকর হয়।
৩. ensure: এই অংশটি ত্রুটি ঘটুক বা না ঘটুক, সর্বদা কার্যকর হয়।
উদাহরণ:
begin
puts "Enter a number:"
num = Integer(gets.chomp)
puts "The number is #{num}"
rescue ArgumentError => e
puts "Error: Please enter a valid number."
else
puts "No error occurred!"
ensure
puts "This is always executed."
endআউটপুট:
Enter a number:
abc
Error: Please enter a valid number.
This is always executed.এখানে:
beginব্লকটি সেই কোড ধারণ করে যেখানে ত্রুটি ঘটতে পারে।rescueব্লকটি ত্রুটি (এখানেArgumentError) ধরা হলে চালিত হয়।elseব্লকটি কোন ত্রুটি না ঘটলে কার্যকর হয়।ensureব্লকটি কোডের শেষে অবশ্যই চালিত হয়, ত্রুটি ঘটুক বা না ঘটুক।
৩. Specific Exception Types
রুবিতে আপনি specific exception types ধরতে পারেন, যেমন ZeroDivisionError, IOError, ArgumentError, ইত্যাদি।
উদাহরণ:
begin
# ZeroDivisionError এড়ানোর জন্য কোড
result = 10 / 0
rescue ZeroDivisionError => e
puts "Error: Division by zero is not allowed."
endএখানে, ZeroDivisionError ক্যাচ করা হয়েছে এবং ব্যবহারকারীকে একটি সঠিক ত্রুটি বার্তা দেখানো হয়েছে।
৪. Raising Exceptions
রুবি ভাষায় আপনি নিজে থেকে ত্রুটি বা ব্যতিক্রম (exception) উত্থাপন (raise) করতে পারেন। এটি বিশেষভাবে তখন ব্যবহৃত হয় যখন আপনি কিছু নির্দিষ্ট শর্ত পূর্ণ না হলে ত্রুটি চান।
উদাহরণ:
def check_age(age)
raise "Age must be greater than 18" if age < 18
puts "Age is valid"
end
begin
check_age(16)
rescue => e
puts "Error: #{e}"
endএখানে, raise কমান্ডটি নির্দিষ্ট শর্তে ত্রুটি উত্থাপন করেছে।
সারসংক্ষেপ
- File Modes: রুবিতে ফাইল মোডের মাধ্যমে আপনি ফাইলের সাথে কাজ করতে পারেন (যেমন
r,w,a,r+, ইত্যাদি) এবং কিভাবে ফাইল পড়া, লেখা বা অ্যাপেন্ড করা হবে তা নির্ধারণ করা হয়। - Exception Handling: রুবিতে
begin...rescue...endব্লক ব্যবহার করে ত্রুটির সঠিক ব্যবস্থা নেওয়া হয়, যাতে প্রোগ্রামটি চলাকালীন ত্রুটি ঘটলে সেটি ঠিকভাবে হ্যান্ডল করা যায়। raise: আপনি নিজে থেকে ত্রুটি তৈরি করতে পারেন এবংrescueব্লকে তা ধরতে পারেন।
এগুলি রুবি প্রোগ্রামিং ভাষায় ফাইল সিস্টেমের সাথে কাজ করার সময় এবং ত্রুটি মোকাবিলা করার সময় কার্যকরী ভূমিকা পালন করে।