Haskell এ Error Handling এর পদ্ধতি

Error Handling এবং Exceptions (এরর হ্যান্ডলিং এবং এক্সসেপশনস) - হ্যাস্কেল (Haskell) - Computer Programming

377

Haskell এ Error Handling এর পদ্ধতি

Haskell, একটি ফাংশনাল প্রোগ্রামিং ভাষা হিসেবে, Error Handling এর জন্য বেশ কিছু শক্তিশালী এবং পরিচ্ছন্ন পদ্ধতি প্রদান করে। Haskell এ Error Handling মূলত Exceptions এবং Result Types এর মাধ্যমে করা হয়। এটি ফাংশনাল প্রোগ্রামিং এর দর্শন অনুসরণ করে, যেখানে পার্শ্বপ্রতিক্রিয়া (side effects) কমানোর এবং প্রোগ্রামগুলিকে আরও নির্ভরযোগ্য ও সুরক্ষিত রাখার চেষ্টা করা হয়।

Haskell এ Error Handling প্রধানত দুটি পদ্ধতির মাধ্যমে করা হয়:

  1. Maybe টাইপ (নির্দিষ্ট ফলাফল পাওয়া না গেলে Nothing প্রদান)
  2. Either টাইপ (এবং Left / Right ব্যবহার)
  3. Excepion Handling (ব্যবহার করে Control.Exception মডিউল)

1. Maybe টাইপ

Maybe টাইপটি ব্যবহার করা হয় যখন একটি ফাংশনের ফলাফল কখনো Nothing হতে পারে (যেমন একটি ভুল বা অনুপস্থিত মান)। এটি একটি নির্দিষ্ট ফলাফল (Just) বা না পাওয়া মান (Nothing) রিটার্ন করে। Haskell এ Maybe একটি অত্যন্ত গুরুত্বপূর্ণ ডেটা টাইপ যেটি নির্দিষ্ট ফলাফল না পাওয়া পরিস্থিতিতে নিরাপদভাবে কাজ করতে সহায়ক।

উদাহরণ:

safeDivide :: Int -> Int -> Maybe Int
safeDivide _ 0 = Nothing  -- শূন্য দ্বারা ভাগ করা সম্ভব নয়
safeDivide x y = Just (x `div` y)  -- সাধারণভাবে ভাগফল প্রদান

এখানে, safeDivide ফাংশনটি দুটি সংখ্যার ভাগফল প্রদান করবে। কিন্তু যদি দ্বিতীয় ইনপুট শূন্য হয়, তাহলে Nothing প্রদান করবে, কারণ শূন্য দ্বারা ভাগ করা সম্ভব নয়।

ব্যবহার:

main :: IO ()
main = do
    print (safeDivide 10 2)  -- আউটপুট: Just 5
    print (safeDivide 10 0)  -- আউটপুট: Nothing

এখানে, safeDivide যদি দুটি সংখ্যার ভাগফল দেয়, তবে এটি Just এর মাধ্যমে ফলাফল প্রদান করবে, অন্যথায় Nothing প্রদান করবে।


2. Either টাইপ

Either টাইপটি আরও বিস্তারিত ভাবে এরর পরিচালনা করতে ব্যবহার হয়। Either সাধারণত দুটি মান ধারণ করে:

  • Left: সাধারণত ত্রুটি বা ব্যতিক্রম নির্দেশ করতে ব্যবহৃত হয়।
  • Right: এটি সফল ফলাফল নির্দেশ করতে ব্যবহৃত হয়।

Either টাইপটি অনেক সময় ব্যবহার করা হয় যখন একটি ত্রুটি বা ব্যতিক্রমের সাথে সাথে একটি সঠিক ফলাফল প্রত্যাশা করা হয়।

উদাহরণ:

safeDivide :: Int -> Int -> Either String Int
safeDivide _ 0 = Left "Error: Division by zero"  -- ত্রুটি ঘটলে Left দিয়ে ত্রুটি বার্তা
safeDivide x y = Right (x `div` y)  -- সফল ভাগফল দেওয়া

এখানে, safeDivide ফাংশনটি Either String Int টাইপের একটি ফলাফল প্রদান করবে। যদি ত্রুটি ঘটে, যেমন শূন্য দ্বারা ভাগ, তাহলে Left এর মাধ্যমে ত্রুটির বার্তা প্রদর্শন করবে। অন্যথায় Right এর মাধ্যমে ভাগফল প্রদান করবে।

ব্যবহার:

main :: IO ()
main = do
    print (safeDivide 10 2)  -- আউটপুট: Right 5
    print (safeDivide 10 0)  -- আউটপুট: Left "Error: Division by zero"

এখানে, Right বা Left এর মাধ্যমে যথাক্রমে সফল ফলাফল বা ত্রুটির বার্তা রিটার্ন হচ্ছে।


3. Exception Handling

Haskell এ Exception Handling করার জন্য Control.Exception মডিউল ব্যবহার করা হয়, যা কিছুটা প্রথাগত টুলসের মতোই। catch, throw, এবং try এর মতো ফাংশনগুলো ব্যবহার করে ব্যতিক্রম বা ত্রুটি পরিচালনা করা যায়।

উদাহরণ:

import Control.Exception

safeDivide :: Int -> Int -> IO Int
safeDivide x 0 = throwIO (DivideByZeroException "Cannot divide by zero")  -- Custom exception
safeDivide x y = return (x `div` y)

main :: IO ()
main = do
    result <- try (safeDivide 10 0) :: IO (Either SomeException Int)
    case result of
        Left ex -> putStrLn ("Caught an exception: " ++ show ex)  -- যদি ব্যতিক্রম ঘটে
        Right val -> print val  -- যদি সঠিক ফলাফল আসে

এখানে:

  • throwIO ব্যবহার করে একটি কাস্টম এক্সসেপশন (যেমন DivideByZeroException) ফেলা হয়েছে।
  • try ব্যবহার করে এক্সসেপশন ধারণ করা হয়েছে এবং ফলস্বরূপ Left বা Right এর মাধ্যমে ব্যতিক্রম বা সফল ফলাফল রিটার্ন করা হয়েছে।

উপসংহার

Haskell এ Error Handling এর বেশ কিছু শক্তিশালী পদ্ধতি রয়েছে:

  1. Maybe টাইপ: যখন একটি ফলাফল পাওয়া যায় বা না পাওয়া যায়।
  2. Either টাইপ: যখন সফল বা ত্রুটির ক্ষেত্রে পৃথক ফলাফল প্রদান করা হয়।
  3. Exception Handling: যখন প্রোগ্রাম চলাকালীন ব্যতিক্রম বা ত্রুটি ঘটতে পারে এবং সেগুলো নিরাপদভাবে পরিচালনা করতে হয়।

এই পদ্ধতিগুলো প্রোগ্রামকে আরও নির্ভরযোগ্য, পরিষ্কার এবং ব্যবস্থাপনা সহজ করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...