Dart:
ত্রুটিগুলি পরিচালনা করা

কিভাবে:

ডার্ট দুটি ধরনের ত্রুটি সমর্থন করে: কম্পাইল-টাইম ত্রুটি এবং রান-টাইম ত্রুটি। কম্পাইল-টাইম ত্রুটিগুলি কোড নির্বাহের আগে ডার্ট বিশ্লেষক দ্বারা সনাক্ত করা হয়, অন্যদিকে রান-টাইম ত্রুটি, অথবা ব্যতিক্রম, নির্বাহের সময় ঘটে। ডার্টে ব্যতিক্রম কীভাবে সামলাবেন তা নিচে দেওয়া হলো:

ট্রাই-ক্যাচ

আপনার অ্যাপ্লিকেশনের ক্র্যাশ প্রতিরোধ করতে এবং ব্যতিক্রম ধরতে try-catch ব্যবহার করুন:

try {
  var result = 100 ~/ 0; // শূন্য দিয়ে ভাগ করার চেষ্টা, একটি ব্যতিক্রম নিক্ষেপ করে
} catch (e) {
  print('একটি ব্যতিক্রম ধরা পড়েছে: $e'); // ব্যতিক্রম সামলায়
}

নমুনা আউটপুট: একটি ব্যতিক্রম ধরা পড়েছে: IntegerDivisionByZeroException

নির্দিষ্ট ব্যতিক্রম

নির্দিষ্ট ব্যতিক্রমগুলি সামলাতে, catch এর পরে ব্যতিক্রমটি উল্লেখ করুন:

try {
  var result = 100 ~/ 0;
} on IntegerDivisionByZeroException {
  print('শূন্য দিয়ে ভাগ করা যাবে না।'); // বিশেষভাবে শূন্য দিয়ে ভাগ করার ব্যতিক্রম সামলায়
}

নমুনা আউটপুট: শূন্য দিয়ে ভাগ করা যাবে না।

স্ট্যাক ট্রেস

ডিবাগিং জন্য একটি স্ট্যাক ট্রেস পেতে, ক্যাচ ব্লকে দ্বিতীয় প্যারামিটার ব্যবহার করুন:

try {
  var result = 100 ~/ 0;
} catch (e, s) {
  print('ব্যতিক্রম: $e');
  print('স্ট্যাক ট্রেস: $s'); // ডিবাগিং জন্য স্ট্যাক ট্রেস প্রিন্ট করে
}

অবশেষে

ট্রাই/ক্যাচ এর পরে, ব্যতিক্রম নিক্ষেপ করা হোক বা না হোক, কোড নির্বাহ করতে finally ব্যবহার করুন:

try {
  var result = 100 ~/ 0;
} catch (e) {
  print('একটি ব্যতিক্রম ধরা পড়েছে: $e');
} finally {
  print('এটি সবসময় নির্বাহিত হয়।'); // পরিষ্কার কোড অথবা চূড়ান্ত ধাপ
}

নমুনা আউটপুট:

একটি ব্যতিক্রম ধরা পড়েছে: IntegerDivisionByZeroException
এটি সবসময় নির্বাহিত হয়।

তৃতীয়-পক্ষের লাইব্রেরি

যদিও ডার্টের মূল লাইব্রেরি ত্রুটি সম্পর্কিত ব্যবস্থাপনার জন্য দৃঢ় হয়, আপনি ত্রুটি সম্পর্কিত ব্যবস্থাপনা জন্য dartz এর মতো তৃতীয়-পক্ষের প্যাকেজগুলিও ব্যবহার করতে পারেন, যা ফাংশনাল প্রোগ্রামিং পদ্ধতিতে Either এবং Option এর মতো ধারণাগুলি পরিচয় করে এবং ত্রুটি সম্পর্কিত ব্যবস্থাপনায় ব্যবহার করা যায়। এখানে ত্রুটি সম্পর্কিত ব্যবস্থাপনার জন্য dartz ব্যবহার করে একটি উদাহরণ:

  1. নির্ভরতার অধীনে আপনার pubspec.yaml ফাইলে dartz যুক্ত করুন:
dependencies:
  dartz: ^0.10.0
  1. আপনার ডার্ট কোডে ত্রুটিগুলিকে সুন্দরভাবে সামলাতে Either ব্যবহার করুন:
import 'package:dartz/dartz.dart';

Either<String, int> divide(int dividend, int divisor) {
  if (divisor == 0) {
    return Left('শূন্য দিয়ে ভাগ করা যাবে না।');
  } else {
    return Right(dividend ~/ divisor);
  }
}

void main() {
  final result = divide(100, 0);
  result.fold(
    (left) => print('ত্রুটি: $left'), 
    (right) => print('ফলাফল: $right')
  );
}

নমুনা আউটপুট: ত্রুটি: শূন্য দিয়ে ভাগ করা যাবে না।

Left অংশ সাধারণত ত্রুটিকে প্রতিনিধিত্ব করে, এবং Right অংশ সাফল্যকে প্রতিনিধিত্ব করে। এই প্যাটার্ন ত্রুটি সম্পর্কিত ব্যবস্থাপনার জন্য আরও ফাংশনাল উপায় সুপারিশ করে, যা ত্রুটি পরিচালনা উপর তৈরি করা পরিষ্কারতা এবং নিয়ন্ত্রণ অর্জন করে।