ভিবিস্ক্রিপ্ট (VBScript) এর মাধ্যমে স্ক্রিপ্ট লেখা এবং কার্যকরী করা খুবই সহজ, তবে কোড লেখার সময় ত্রুটি হতে পারে যা সঠিকভাবে সনাক্ত এবং সমাধান করা প্রয়োজন। ত্রুটি সনাক্তকরণ এবং সমাধান (Error Handling) অত্যন্ত গুরুত্বপূর্ণ, কারণ এর মাধ্যমে স্ক্রিপ্টটি সঠিকভাবে কাজ করে এবং আপনার স্ক্রিপ্টের কার্যকারিতা বা সিস্টেমের নিরাপত্তা সুরক্ষিত থাকে।
এই টিউটোরিয়ালে আমরা ভিবিস্ক্রিপ্টে ত্রুটি সনাক্তকরণ এবং সমাধান (Error Detection and Handling) সম্পর্কে আলোচনা করব।
১. ভিবিস্ক্রিপ্টে ত্রুটি সনাক্তকরণ (Error Detection in VBScript)
ভিবিস্ক্রিপ্টে ত্রুটি সাধারণত দুটি ধরনের হয়:
- Runtime Errors: স্ক্রিপ্ট রান করার সময় ঘটে, যেমন অবৈধ ফাইল পাথ বা ডিভাইস অ্যাক্সেসের সমস্যা।
- Syntax Errors: কোড লেখার সময় ঘটে, যেমন ভুল সিনট্যাক্স বা কমপাইলার ভুল।
এটি নিশ্চিত করার জন্য, আপনার স্ক্রিপ্টে ত্রুটি শনাক্ত এবং সঠিকভাবে পরিচালনা করা উচিত।
১.১ ভুল সিনট্যাক্স (Syntax Error)
ভুল সিনট্যাক্সের কারণে স্ক্রিপ্ট কম্পাইল হয় না এবং এটি রান করার আগে ত্রুটি দেখায়। উদাহরণস্বরূপ:
Dim a, b
a = 10
b = 20
result = a + ' ভুল, কোন মান নেই
এখানে, b + অংশে ভুল রয়েছে। এটি Syntax Error তৈরি করবে। সঠিকভাবে লিখলে:
result = a + b
১.২ রানটাইম ত্রুটি (Runtime Error)
রানটাইম ত্রুটি তখন ঘটে যখন স্ক্রিপ্ট রান করার সময় কোনো কিছু ভুল হয়। যেমন, যদি আপনি এমন একটি ফাইল খুলতে চান যা আসলে এক্সিস্ট করে না:
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\nonexistentfile.txt", 1)
এখানে, nonexistentfile.txt ফাইলটি না থাকলে একটি Runtime Error হবে।
২. ত্রুটি পরিচালনা (Error Handling in VBScript)
ভিবিস্ক্রিপ্টে ত্রুটি পরিচালনা করার জন্য On Error স্টেটমেন্ট ব্যবহার করা হয়। এর মাধ্যমে আপনি ত্রুটি ঘটলে নির্দিষ্ট কাজ করতে বা ত্রুটির বিস্তারিত তথ্য দেখতে পারেন।
২.১ On Error Resume Next
এই স্টেটমেন্ট ব্যবহার করলে, স্ক্রিপ্ট ত্রুটি ঘটলেও পরবর্তী লাইনগুলো চলতে থাকে। অর্থাৎ, ত্রুটির কারণে স্ক্রিপ্ট থেমে যাবে না, এবং আপনি পরবর্তী কোড চালাতে পারবেন।
উদাহরণ:
On Error Resume Next
Dim a, b
a = 10
b = 0
result = a / b ' ডিভাইড বাই জিরো ত্রুটি
If Err.Number <> 0 Then
MsgBox "ত্রুটি ঘটেছে: " & Err.Description
End If
এখানে, On Error Resume Next এর মাধ্যমে যখন ডিভাইড বাই জিরো (Divide by Zero) ত্রুটি ঘটে, তখন স্ক্রিপ্ট থামে না। Err.Number এবং Err.Description এর মাধ্যমে ত্রুটির সংখ্যা এবং বর্ণনা পাওয়া যাবে।
২.২ On Error GoTo
এই স্টেটমেন্টটি ব্যবহার করলে স্ক্রিপ্ট ত্রুটি ঘটলে নির্দিষ্ট একটি লেবেলে চলে যাবে এবং আপনি সেখানে ত্রুটি পরিচালনা করতে পারবেন।
উদাহরণ:
On Error GoTo ErrorHandler
Dim a, b
a = 10
b = 0
result = a / b ' ডিভাইড বাই জিরো ত্রুটি
Exit Sub
ErrorHandler:
MsgBox "ত্রুটি ঘটেছে: " & Err.Description
Resume Next
এখানে, On Error GoTo ErrorHandler এর মাধ্যমে যখন ত্রুটি ঘটে, স্ক্রিপ্টের execution ErrorHandler লেবেলে চলে যাবে এবং সেখানে ত্রুটির বর্ণনা দেখানো হবে।
৩. ত্রুটি বিবরণ এবং লগিং (Error Description and Logging)
ভিবিস্ক্রিপ্টে, Err.Number, Err.Description এবং Err.Source ব্যবহার করে ত্রুটির বিস্তারিত তথ্য পাওয়া যায়। এই তথ্য লগ ফাইলে রাখা যায় বা ইউজারকে দেখানো যেতে পারে।
৩.১ ত্রুটি লগিং
Dim fso, logFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set logFile = fso.OpenTextFile("C:\error_log.txt", 8, True) ' 8 = Append mode
On Error Resume Next
Dim a, b
a = 10
b = 0
result = a / b ' ডিভাইড বাই জিরো ত্রুটি
If Err.Number <> 0 Then
logFile.WriteLine "ত্রুটি: " & Err.Description & " | কোড: " & Err.Number & " | সময়: " & Now
MsgBox "ত্রুটি ঘটেছে, লগে দেখা যাবে।"
End If
logFile.Close
এখানে, ত্রুটি ঘটলে তার বিবরণ error_log.txt ফাইলে লেখা হবে।
৪. ত্রুটি পুনরায় চেষ্টা (Retry Mechanism)
কখনও কখনও, একটি ত্রুটি শুধু সময়ের জন্য ঘটতে পারে এবং পুনরায় চেষ্টা করলে কাজ করতে পারে। এই ধরনের পরিস্থিতিতে Retry মেকানিজম ব্যবহার করা যেতে পারে।
On Error Resume Next
Dim retryCount
retryCount = 0
Do While retryCount < 3
retryCount = retryCount + 1
' এখানে ফাইল বা কোনো রিসোর্স এক্সেস করার চেষ্টা
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\example.txt", 1)
If Err.Number = 0 Then
MsgBox "ফাইল সফলভাবে খোলা হয়েছে!"
Exit Do
Else
MsgBox "ত্রুটি ঘটেছে, পুনরায় চেষ্টা করা হচ্ছে... (Retry " & retryCount & ")"
Err.Clear
End If
Loop
এখানে, যখন প্রথমবার ত্রুটি ঘটে, স্ক্রিপ্ট পুনরায় চেষ্টা করবে এবং যদি ৩ বার চেষ্টা করেও কাজ না হয়, তখন স্ক্রিপ্ট থেমে যাবে।
৫. ত্রুটি এবং রিসোর্স ব্যবস্থাপনা (Error and Resource Management)
যখন আপনি একটি অবজেক্ট বা ফাইল ওপেন করেন, তখন তা সঠিকভাবে বন্ধ করতে হবে, বিশেষত যদি কোনো ত্রুটি ঘটে। এর মাধ্যমে আপনি সিস্টেমের রিসোর্স ম্যানেজমেন্ট বজায় রাখবেন।
On Error Resume Next
Dim fso, file
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\example.txt", 1)
If Err.Number <> 0 Then
MsgBox "ত্রুটি ঘটেছে: " & Err.Description
End If
If Not file Is Nothing Then
file.Close
End If
Set file = Nothing
Set fso = Nothing
এখানে, ত্রুটি ঘটলেও নিশ্চিত করা হচ্ছে যে ফাইলটি বন্ধ হয়ে যাবে এবং অবজেক্টগুলো মুক্ত হবে।
সারাংশ
ভিবিস্ক্রিপ্টে ত্রুটি সনাক্তকরণ এবং সমাধান খুবই গুরুত্বপূর্ণ। এটি স্ক্রিপ্টের কার্যকারিতা নিশ্চিত করতে এবং ব্যবহৃত সিস্টেমের সুরক্ষা রক্ষা করতে সহায়ক হয়। On Error Resume Next এবং On Error GoTo এর মাধ্যমে আপনি ত্রুটি পরিচালনা করতে পারেন, Err.Number এবং Err.Description ব্যবহার করে ত্রুটির বিবরণ জানতে পারেন এবং Retry Mechanism ব্যবহার করে কিছু ত্রুটি পুনরায় চেষ্টা করতে পারেন।
এই সব কৌশল ব্যবহারে আপনার স্ক্রিপ্টের কার্যকারিতা আরও শক্তিশালী এবং সুরক্ষিত হবে।
Read more