স্কালা ট্রাই-ক্যাচ ব্লকের গঠন

স্কালা এক্সেপশন হ্যান্ডলিং - স্কালা প্রোগ্রামিং (Scala Programming) - Computer Programming

234

স্কালায় try-catch ব্লক ব্যবহার করে আপনি প্রোগ্রামের এক্সসেপশন (exception) বা ত্রুটির পরিস্থিতি হ্যান্ডেল করতে পারেন। এটি কোডের নিরাপত্তা এবং স্থিরতা বজায় রাখতে সহায়তা করে, যাতে কোনো অপ্রত্যাশিত ত্রুটি ঘটলে প্রোগ্রামটি ক্র্যাশ না হয়ে নির্দিষ্ট ব্যবস্থাপনা করতে পারে।


১. স্কালায় try-catch ব্লক গঠন

স্কালায় try ব্লকটি কোডের সেই অংশে র‌্যাপ করা হয় যেখানে ত্রুটির সম্ভাবনা থাকে এবং catch ব্লকটি ত্রুটির ধরন অনুযায়ী সেই ত্রুটিকে হ্যান্ডেল করে।

try {
  // Code that may throw an exception
} catch {
  case e: ExceptionType => 
    // Handle the exception
}

উদাহরণ:

try {
  val result = 10 / 0  // This will throw an ArithmeticException
  println(result)
} catch {
  case e: ArithmeticException => println("Error: Division by zero!")
  case e: Exception => println("An unexpected error occurred: " + e.getMessage)
}

এখানে:

  • try ব্লকে একটি বিভাজন (division) অপারেশন আছে যা ArithmeticException সৃষ্টি করবে যদি ডিভাইড বাই জিরো হয়।
  • catch ব্লকে দুটি আলাদা এক্সসেপশন হ্যান্ডেল করা হচ্ছে: ArithmeticException এবং সাধারণ Exception

২. একাধিক এক্সসেপশন হ্যান্ডলিং

স্কালায় আপনি একাধিক catch ব্লক ব্যবহার করতে পারেন যাতে একাধিক এক্সসেপশন টাইপের জন্য আলাদা আলাদা হ্যান্ডলিং করা যায়।

try {
  // Code that may throw exceptions
} catch {
  case e: ArithmeticException => println("Arithmetic exception occurred")
  case e: NullPointerException => println("Null pointer exception occurred")
  case e: Exception => println("A general exception occurred")
}

এখানে:

  • ArithmeticException এবং NullPointerException আলাদা আলাদা হ্যান্ডলিং করা হয়েছে।
  • যদি কোনো অপরিচিত এক্সসেপশন ঘটে, তাহলে Exception হ্যান্ডলার চালু হবে।

৩. finally ব্লক

স্কালায় finally ব্লক ব্যবহার করা হয় যেকোনো ত্রুটি ঘটুক বা না ঘটুক, কোডের কিছু অংশ কার্যকরী করতে। এটি try-catch ব্লকের পরে থাকে এবং যেকোনো পরিস্থিতিতে চলমান থাকে।

try {
  val result = 10 / 2
  println("Result: " + result)
} catch {
  case e: ArithmeticException => println("Error: Division by zero!")
} finally {
  println("This will always run, regardless of exception")
}

এখানে:

  • finally ব্লকটি try বা catch ব্লকের পরে নির্বাহিত হয়।
  • এটি সাধারণত resources (যেমন ফাইল বা ডাটাবেস সংযোগ) বন্ধ করার জন্য ব্যবহৃত হয়।

৪. try-catch ব্লকের সাথে Option ব্যবহার

একটি সাধারণ প্যাটার্ন হল try-catch ব্লক ব্যবহার করে Option রিটার্ন করা, যাতে ত্রুটির ক্ষেত্রে None এবং সঠিক ফলাফলের জন্য Some রিটার্ন করা যায়।

def safeDivision(a: Int, b: Int): Option[Int] = {
  try {
    Some(a / b)
  } catch {
    case e: ArithmeticException => None
  }
}

println(safeDivision(10, 2))  // Output: Some(5)
println(safeDivision(10, 0))  // Output: None

এখানে:

  • safeDivision ফাংশনটি Option[Int] রিটার্ন করে, যেখানে সফল ডিভিশনের জন্য Some এবং ত্রুটির জন্য None ফেরত দেওয়া হয়।

৫. এক্সসেপশন প্রোপাগেশন (Exception Propagation)

যদি কোনো এক্সসেপশন try-catch ব্লকের মধ্যে হ্যান্ডেল না করা হয়, তবে এটি উপরের স্তরের কোডে প্রোপাগেট (propagate) হবে এবং সেই অংশে catch ব্লকটি দ্বারা হ্যান্ডেল করা হবে।

উদাহরণ:

def riskyMethod(): Unit = {
  try {
    throw new Exception("Something went wrong")
  } catch {
    case e: Exception => println("Caught in riskyMethod: " + e.getMessage)
  }
}

def callingMethod(): Unit = {
  try {
    riskyMethod()
  } catch {
    case e: Exception => println("Caught in callingMethod: " + e.getMessage)
  }
}

callingMethod()  // Output: Caught in riskyMethod: Something went wrong

এখানে:

  • riskyMethod ত্রুটি ঘটিয়ে সেটি নিজের মধ্যে হ্যান্ডেল করছে।
  • callingMethod তে যদি riskyMethod কোনো ত্রুটি না হ্যান্ডেল করে, তবে তা উপরের স্তরে প্রোপাগেট হবে এবং সেই স্তরে হ্যান্ডেল হবে।

সারাংশ

  • try-catch ব্লক: কোডের একটি অংশ যেখানে ত্রুটি বা এক্সসেপশন ঘটলে তা হ্যান্ডেল করা যায়।
  • catch: বিভিন্ন এক্সসেপশন হ্যান্ডলিংয়ের জন্য ব্যবহার করা হয়।
  • finally: কোড ব্লক যা try-catch ব্লকের পরে চলে এবং এটি যেকোনো পরিস্থিতিতে নির্বাহিত হয়।
  • এক্সসেপশন প্রোপাগেশন: যদি কোনো এক্সসেপশন try-catch ব্লকে হ্যান্ডেল না করা হয়, তবে সেটি উপরের স্তরে প্রোপাগেট হতে পারে।

স্কালায় এক্সসেপশন হ্যান্ডলিং অত্যন্ত কার্যকরী এবং নিরাপদভাবে ত্রুটি ম্যানেজমেন্ট করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...