টিসিএল (Tcl) - Input Validation Techniques এবং Error Messages
টিসিএল (Tcl) ভাষায় Input Validation এবং Error Handling অত্যন্ত গুরুত্বপূর্ণ। আপনি যখন একটি অ্যাপ্লিকেশন তৈরি করেন, তখন ব্যবহারকারীর ইনপুট যাচাই করা এবং ত্রুটি বার্তা প্রদর্শন করা গুরুত্বপূর্ণ যাতে অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করে এবং ব্যবহারকারীকে উপযুক্ত বার্তা সরবরাহ করতে পারে।
এখানে Input Validation Techniques এবং Error Messages এর কিছু সাধারণ পদ্ধতি এবং উদাহরণ দেওয়া হলো।
১. Input Validation Techniques
Input Validation হল ইনপুট ডেটা যাচাই করার প্রক্রিয়া, যাতে এটি সঠিক, নিরাপদ এবং প্রত্যাশিত মানে থাকে। টিসিএল-এ ইনপুট যাচাই করার জন্য বিভিন্ন পদ্ধতি ব্যবহার করা হয়, যেমন সংখ্যার পরিসীমা চেক করা, স্ট্রিংয়ের দৈর্ঘ্য চেক করা, নির্দিষ্ট প্যাটার্ন অনুসন্ধান করা ইত্যাদি।
১.১. সংখ্যা যাচাই (Numeric Validation)
যদি ব্যবহারকারীর ইনপুট একটি সংখ্যা হতে হয়, তবে string is কমান্ডের মাধ্যমে ইনপুট যাচাই করা যায়।
উদাহরণ:
proc validateNumber {num} {
if {![string is integer $num]} {
puts "Error: $num is not a valid integer."
return
}
puts "$num is a valid integer."
}
validateNumber 123 ;# আউটপুট: 123 is a valid integer.
validateNumber "abc" ;# আউটপুট: Error: abc is not a valid integer.এখানে, string is integer ব্যবহার করে যাচাই করা হয়েছে যে ইনপুটটি একটি পূর্ণসংখ্যা (integer) কিনা।
১.২. পদার্থিক সীমা যাচাই (Range Validation)
যদি ইনপুটটি একটি নির্দিষ্ট পরিসীমার মধ্যে থাকতে হয়, তবে আপনি expr কমান্ডের মাধ্যমে সেই পরিসীমা যাচাই করতে পারেন।
উদাহরণ:
proc validateRange {num} {
if { $num < 1 || $num > 100 } {
puts "Error: $num is out of range. It should be between 1 and 100."
return
}
puts "$num is within the valid range."
}
validateRange 50 ;# আউটপুট: 50 is within the valid range.
validateRange 150 ;# আউটপুট: Error: 150 is out of range. It should be between 1 and 100.এখানে, ইনপুটের মান ১ এবং ১০০ এর মধ্যে থাকতে হবে, এবং validateRange ফাংশনটি এটি যাচাই করছে।
১.৩. স্ট্রিং দৈর্ঘ্য যাচাই (String Length Validation)
এখানে স্ট্রিংয়ের দৈর্ঘ্য যাচাই করা হচ্ছে, যেমন এটি একটি নির্দিষ্ট দৈর্ঘ্যের মধ্যে থাকা উচিত।
উদাহরণ:
proc validateStringLength {str} {
if { [string length $str] < 5 } {
puts "Error: String is too short. Minimum length is 5 characters."
return
}
puts "String is valid."
}
validateStringLength "Hello" ;# আউটপুট: String is valid.
validateStringLength "Hi" ;# আউটপুট: Error: String is too short. Minimum length is 5 characters.এখানে, স্ট্রিংয়ের দৈর্ঘ্য কমপক্ষে ৫টি অক্ষর হতে হবে। এটি যাচাই করতে string length ব্যবহার করা হয়েছে।
১.৪. প্যাটার্ন ম্যাচিং (Pattern Matching Validation)
ইনপুটের সাথে একটি নির্দিষ্ট প্যাটার্ন মেলে কিনা তা যাচাই করতে regexp কমান্ড ব্যবহার করা হয়।
উদাহরণ:
proc validateEmail {email} {
if {![regexp {^[\w\.-]+@[\w\.-]+\.[a-z]{2,}$} $email]} {
puts "Error: $email is not a valid email address."
return
}
puts "$email is a valid email address."
}
validateEmail "test@example.com" ;# আউটপুট: test@example.com is a valid email address.
validateEmail "test.com" ;# আউটপুট: Error: test.com is not a valid email address.এখানে, একটি ইমেল প্যাটার্ন যাচাই করা হয়েছে regexp ব্যবহার করে। এটি নিশ্চিত করবে যে ইমেল ঠিকমতো ফরম্যাটে আছে।
২. Error Handling and Error Messages
Error Handling হলো এমন একটি প্রক্রিয়া যা ইনপুট বা কার্যক্রমে কোনো ত্রুটি (error) ঘটলে ত্রুটির বার্তা প্রদান করে। টিসিএল-এ catch এবং throw কমান্ডের মাধ্যমে ত্রুটি হ্যান্ডলিং করা হয়।
২.১. catch ব্যবহার করে ত্রুটি হ্যান্ডলিং
catch কমান্ডের মাধ্যমে আপনি কোনো কমান্ড চালানোর চেষ্টা করেন এবং ত্রুটি হলে তা হ্যান্ডেল করেন। এটি ত্রুটির বার্তা ফিরিয়ে দেয় এবং আপনি সেটি ব্যবহার করে বার্তা প্রদর্শন করতে পারেন।
উদাহরণ:
set result ""
catch {set result [expr {1/0}]} result
puts "Caught error: $result"এখানে, expr {1/0} ডিভাইড বাই জিরো ত্রুটি ঘটাবে, এবং catch সেই ত্রুটিকে ধরা হবে, তারপর সেটি result ভেরিয়েবলে সংরক্ষিত হবে এবং আউটপুট হবে:
Caught error: can't divide by zero২.২. throw ব্যবহার করে কাস্টম ত্রুটি তৈরি করা
throw কমান্ড ব্যবহার করে আপনি কাস্টম ত্রুটি তৈরি করতে পারেন এবং সেই ত্রুটির বার্তা পাঠাতে পারেন।
উদাহরণ:
proc divide {a b} {
if { $b == 0 } {
throw "Division by zero error"
}
return [expr {$a / $b}]
}
catch {divide 10 0} errorMsg
puts "Error caught: $errorMsg"এখানে, throw "Division by zero error" ত্রুটি তৈরি করেছে এবং catch সেটি ধরা হয়েছে। আউটপুট হবে:
Error caught: Division by zero error২.৩. Custom Error Message
টিসিএল-এ আপনি কাস্টম ত্রুটি বার্তা তৈরি করে তা ব্যবহারকারীর কাছে পাঠাতে পারেন। এটি বিশেষ পরিস্থিতিতে ব্যবহারকারীদের সাহায্য করতে সহায়ক।
উদাহরণ:
proc validateAge {age} {
if { $age < 18 } {
throw "Error: You must be at least 18 years old."
}
puts "Age validated."
}
catch {validateAge 16} errorMsg
puts "Error caught: $errorMsg"এখানে, validateAge ফাংশনটি ১৮ বছরের কম বয়স হলে কাস্টম ত্রুটি বার্তা পাঠায়, যা catch দ্বারা ধরা হয় এবং "Error caught: You must be at least 18 years old." আউটপুট হয়।
উপসংহার
Input Validation এবং Error Handling টিসিএল অ্যাপ্লিকেশন তৈরির একটি গুরুত্বপূর্ণ অংশ। টিসিএল আপনাকে বিভিন্ন ইনপুট যাচাইয়ের টুলস এবং ত্রুটি হ্যান্ডলিং পদ্ধতি প্রদান করে, যেমন catch, throw, এবং regexp কমান্ডগুলি। আপনি ইনপুট চেক করতে সংখ্যা যাচাই, স্ট্রিং দৈর্ঘ্য যাচাই, প্যাটার্ন ম্যাচিং ব্যবহার করতে পারেন এবং কাস্টম ত্রুটি বার্তা সহ ত্রুটি হ্যান্ডলিং করতে পারেন। এর মাধ্যমে আপনি একটি নির্ভরযোগ্য এবং ব্যবহারকারী বান্ধব অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Read more