Tcl এ Exception Handling এর ধারণা

Exception Handling (এক্সসেপশন হ্যান্ডলিং) - টিসিএল/টিকে (Tcl/Tk) - Computer Programming

305

টিসিএল (Tcl) - এক্সসেপশন হ্যান্ডলিং এর ধারণা

এক্সসেপশন হ্যান্ডলিং হল এমন একটি প্রক্রিয়া, যা প্রোগ্রামিং ভাষায় ত্রুটি (error) বা অপ্রত্যাশিত পরিস্থিতির মোকাবিলা করতে ব্যবহৃত হয়। টিসিএল (Tcl) এক্সসেপশন হ্যান্ডলিং এর মাধ্যমে আপনি কোডের মধ্যে ত্রুটি সনাক্ত করতে এবং সেগুলি উপযুক্তভাবে পরিচালনা করতে পারেন, যাতে আপনার প্রোগ্রাম ক্র্যাশ না হয় বা অপ্রত্যাশিত আচরণ না করে।

টিসিএল এক্সসেপশন হ্যান্ডলিং ব্যবহারের জন্য প্রধানত try, catch, এবং finally কমান্ডগুলো ব্যবহার করা হয়।

১. try এবং catch কমান্ড

টিসিএল-এ try কমান্ড ব্যবহার করে আপনি এমন কোড ব্লক লিখতে পারেন যা আপনি পরীক্ষা করতে চান। যদি কোডের মধ্যে কোনো ত্রুটি ঘটে, তাহলে catch কমান্ড দ্বারা সেই ত্রুটির সংক্রান্ত তথ্য ক্যাচ (ধরা) করা হয় এবং তারপরে উপযুক্ত ব্যবস্থা নেওয়া হয়।

সাধারণ সিনট্যাক্স:

try {
    # আপনার কোড
} catch {error} {
    # ত্রুটির জন্য হ্যান্ডলার
}

এখানে:

  • try ব্লকের মধ্যে যেকোনো কোড থাকতে পারে যা আপনি রান করতে চান।
  • যদি কোনো ত্রুটি ঘটে, তাহলে catch ব্লক কার্যকর হবে এবং ত্রুটির বার্তা error ভেরিয়েবলে সংরক্ষিত হবে।

উদাহরণ:

try {
    set x 10
    set y 0
    set result [expr $x / $y]
} catch {error} {
    puts "Error occurred: $error"
}

এখানে, ডিভিশন বাই জিরো এরর ঘটবে, এবং catch ব্লকটি সেই ত্রুটিটি ধরা এবং "Error occurred: division by zero" প্রিন্ট করবে।

২. catch কমান্ডের ব্যবহার

catch কমান্ডটি ব্যবহৃত হয় যখন আপনি কোনো কোড ব্লককে কার্যকরী করতে চান এবং তার ত্রুটি ক্যাচ করতে চান। এটি একটি বুলিয়ান মান রিটার্ন করে:

  • যদি কোড ব্লক সফলভাবে চলতে থাকে, তবে এটি 0 রিটার্ন করে।
  • যদি কোনো ত্রুটি ঘটে, তবে এটি 1 রিটার্ন করে এবং ত্রুটির বার্তা প্রদান করে।

উদাহরণ:

set result [catch {
    set x 10
    set y 0
    set division [expr $x / $y]
} errorMessage]

if { $result != 0 } {
    puts "Caught error: $errorMessage"
} else {
    puts "Result: $division"
}

এখানে, catch ব্লকটি ত্রুটি ক্যাচ করবে এবং errorMessage ভেরিয়েবলে সেই ত্রুটির বার্তা সংরক্ষণ করবে। কোড ব্লক সফল হলে result ০ হবে, এবং ত্রুটি হলে result ১ হবে।

৩. finally ব্লক

finally ব্লকটি try এবং catch ব্লকের পরে ব্যবহৃত হয়। এটি নিশ্চিত করে যে, try বা catch ব্লক যেকোনো অবস্থাতেই শেষ হলে, finally ব্লকের কোড চলবে। এটি সাধারণত পরবর্তী ক্লিনআপ অপারেশন বা রিসোর্স মুক্ত করার জন্য ব্যবহৃত হয়।

উদাহরণ:

try {
    set x 10
    set y 0
    set result [expr $x / $y]
} catch {error} {
    puts "Error occurred: $error"
} finally {
    puts "Cleaning up resources..."
}

এখানে, finally ব্লকটি সব সময় রান হবে, চুক্তি না থাকা সত্ত্বেও, যতক্ষণ না try বা catch ব্লক শেষ হয়।

৪. throw কমান্ড

throw কমান্ডটি একটি এক্সসেপশন বা ত্রুটি তৈরি করতে ব্যবহৃত হয়। এটি ব্যবহারকারীর তৈরি ত্রুটি বা সমস্যা সংকেত পাঠানোর জন্য ব্যবহৃত হয়।

উদাহরণ:

proc divide {a b} {
    if { $b == 0 } {
        throw "Division by zero is not allowed"
    }
    return [expr $a / $b]
}

catch {divide 10 0} result
puts "Error: $result"

এখানে, divide ফাংশনটি যদি b এর মান ০ হয়, তবে একটি ত্রুটি সৃষ্টির জন্য throw কমান্ড ব্যবহার করা হয়।

৫. অভ্যন্তরীণ ত্রুটি (Internal Errors)

টিসিএল-এ কিছু অভ্যন্তরীণ ত্রুটির জন্য নিজস্ব এক্সসেপশন রয়েছে, যেমন memory full, invalid command, ইত্যাদি। এই ধরনের ত্রুটিগুলি সিস্টেম বা পরিবেশের উপর নির্ভরশীল।

উদাহরণ:

catch {unknownCommand} result
puts "Caught error: $result"

এখানে, unknownCommand এরকম কোনো কমান্ড না থাকলে এটি ত্রুটি তৈরি করবে, এবং catch ব্লকটি সেই ত্রুটি ধরবে।

৬. প্রতিক্রিয়া (Re-throwing an Exception)

এক্সসেপশন হ্যান্ডলিংয়ের পরে আপনি চাইলে ত্রুটিটি আবার উপরের স্তরের (calling procedure) কাছে পাঠাতে পারেন। এর জন্য throw ব্যবহার করা হয়।

উদাহরণ:

proc test {val} {
    if { $val == 0 } {
        throw "Zero is not allowed"
    }
    return [expr $val * 10]
}

catch {test 0} result
puts "Caught error: $result"

এখানে, যদি val ০ হয়, তবে একটি ত্রুটি তৈরি হবে যা catch ব্লক ধরবে এবং ত্রুটির বার্তা প্রদর্শন করবে।

উপসংহার

টিসিএল-এ এক্সসেপশন হ্যান্ডলিং একটি গুরুত্বপূর্ণ প্রক্রিয়া যা আপনাকে কোডের ত্রুটির সঠিক ব্যবস্থাপনা করতে সহায়তা করে। try, catch, finally, throw এবং eof এর মতো কমান্ডগুলি ব্যবহার করে আপনি টিসিএল স্ক্রিপ্টে ত্রুটি পরিচালনা করতে পারবেন এবং আপনার কোডের কার্যকারিতা নিশ্চিত করতে পারবেন। এক্সসেপশন হ্যান্ডলিং ব্যবহারের মাধ্যমে আপনার কোড আরও শক্তিশালী, স্থিতিস্থাপক এবং ত্রুটি মুক্ত হবে।

Content added By
Promotion

Are you sure to start over?

Loading...