Functions এবং Error Handling

Dart প্রোগ্রামিং ভাষার বেসিক - ফ্লাটার (Flutter) - Mobile App Development

509

Dart-এর ফাংশন এবং এরর হ্যান্ডলিং ব্যবহার করে কোড আরও সংগঠিত, কার্যকর এবং ত্রুটিমুক্ত করা যায়।

Dart-এ ফাংশন এবং এরর হ্যান্ডলিং নিয়ে বিস্তারিতভাবে আলোচনা নিচে দেওয়া হলো:


Functions (ফাংশন)

Dart প্রোগ্রামিং ভাষায় ফাংশন হলো কোডের একটি ব্লক, যা একটি নির্দিষ্ট কাজ সম্পাদন করতে ব্যবহৃত হয়। Dart-এ ফাংশনগুলো ক্লাসের বাইরে বা ভিতরে ডিফাইন করা যেতে পারে। নিচে Dart-এর ফাংশন সম্পর্কিত ধারণা এবং উদাহরণগুলো দেওয়া হলো:

ফাংশন ডিক্লেয়ার করা

Dart এ ফাংশন ডিক্লেয়ার করা হয় return_type এবং function_name ব্যবহার করে:

return_type function_name(parameters) {
  // function body
}

উদাহরণ ১: একটি সাধারণ ফাংশন

int add(int a, int b) {
  return a + b;
}

void main() {
  int sum = add(10, 5);
  print(sum); // Output: 15
}

উদাহরণ ২: void ফাংশন

void greet(String name) {
  print('Hello, $name!');
}

void main() {
  greet('Alice'); // Output: Hello, Alice!
}

Arrow Function (ল্যাম্বডা বা অ্যারো ফাংশন)

Dart এ => অপারেটর ব্যবহার করে একটি সংক্ষিপ্ত ফাংশন লেখা যায়:

int multiply(int a, int b) => a * b;

void main() {
  print(multiply(4, 5)); // Output: 20
}

Optional এবং Named Parameters

Optional Parameters: ফাংশনের প্যারামিটারগুলো ব্র্যাকেট [] এর ভিতরে রাখলে তা ঐচ্ছিক হিসেবে বিবেচিত হয়:

void printDetails(String name, [int? age]) {
  if (age != null) {
    print('$name is $age years old.');
  } else {
    print('$name\'s age is unknown.');
  }
}

void main() {
  printDetails('Alice'); // Output: Alice's age is unknown.
  printDetails('Bob', 30); // Output: Bob is 30 years old.
}

Named Parameters: Dart-এ required কীওয়ার্ড ব্যবহার করে ফাংশনের প্যারামিটারগুলোকে নির্দিষ্ট করা যায় এবং ডিফল্ট ভ্যালু সেট করা যায়:

void describe({required String name, int age = 18}) {
  print('$name is $age years old.');
}

void main() {
  describe(name: 'Charlie'); // Output: Charlie is 18 years old.
  describe(name: 'David', age: 25); // Output: David is 25 years old.
}

Anonymous Functions (গোপন বা অজানা ফাংশন)

Dart এ ফাংশনগুলোকে ভেরিয়েবলে সংরক্ষণ করা যায় এবং প্যারামিটার ছাড়া সেগুলোকে ডিফাইন করা যায়:

void main() {
  var printMessage = (String message) {
    print(message);
  };

  printMessage('Hello, Dart!'); // Output: Hello, Dart!
}

Error Handling (এরর হ্যান্ডলিং)

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

try-catch ব্লক

try ব্লকের ভেতরে থাকা কোডে কোনো এরর থাকলে catch ব্লকে ধরা পড়বে এবং সেখানে তার সমাধান বা নোটিফিকেশন প্রদর্শন করা যাবে।

void main() {
  try {
    int result = 10 ~/ 0; // Division by zero error
    print(result);
  } catch (e) {
    print('Error: $e'); // Output: Error: IntegerDivisionByZeroException
  }
}

on-catch ব্লক

on কীওয়ার্ড ব্যবহার করে নির্দিষ্ট এরর টাইপের জন্য আলাদা হ্যান্ডলিং করা যায়:

void main() {
  try {
    int result = 10 ~/ 0;
    print(result);
  } on IntegerDivisionByZeroException {
    print('Cannot divide by zero!');
  } catch (e) {
    print('Error: $e');
  }
}

finally ব্লক

finally ব্লক সবসময় চলবে, চাইলেও সেটা হোক try সফল হলেও বা catch ব্লকে এরর ধরা পড়লেও:

void main() {
  try {
    int result = 10 ~/ 0;
    print(result);
  } catch (e) {
    print('Error: $e');
  } finally {
    print('This block always executes.');
  }
}

Custom Exceptions (কাস্টম এক্সেপশন)

Dart এ কাস্টম এক্সেপশন তৈরি করা যায়। এজন্য একটি ক্লাস তৈরি করতে হবে যা Exception ক্লাস থেকে ইনহেরিট করবে:

class AgeException implements Exception {
  String errorMessage() => 'Age cannot be negative!';
}

void checkAge(int age) {
  if (age < 0) {
    throw AgeException();
  } else {
    print('Valid age: $age');
  }
}

void main() {
  try {
    checkAge(-5);
  } catch (e) {
    print(e.errorMessage()); // Output: Age cannot be negative!
  }
}

এরর রিইথ্রো করা

কখনো কখনো আমরা একটি এরর ধরতে চাই এবং তারপর সেটি পুনরায় ছুঁড়তে চাই, এর জন্য rethrow ব্যবহার করা হয়:

void divideNumbers(int a, int b) {
  try {
    print(a ~/ b);
  } catch (e) {
    print('Error: $e');
    rethrow; // Re-throwing the exception
  }
}

void main() {
  try {
    divideNumbers(10, 0);
  } catch (e) {
    print('Handled again in main: $e');
  }
}

Dart এরর হ্যান্ডলিংয়ের গুরুত্বপূর্ণ দিক

  • Dart এ try-catch ব্যবহার করে এরর হ্যান্ডেল করলে কোড ক্র্যাশ থেকে রক্ষা করা যায়।
  • finally ব্লক ব্যবহার করে আপনি শেষমেশ ক্লিনআপ বা রিসোর্স মুক্ত করার কাজ করতে পারেন।
  • কাস্টম এক্সেপশন ব্যবহার করে আপনি আপনার কোডে আরও স্পেসিফিক এরর হ্যান্ডলিং যোগ করতে পারেন, যা বাগ খুঁজে পেতে সহায়ক।
Content added By
Promotion

Are you sure to start over?

Loading...