Asynchronous Code এর জন্য Error Handling
অ্যাসিনক্রোনাস কোডে ত্রুটি পরিচালনা (Error Handling) খুবই গুরুত্বপূর্ণ, কারণ অ্যাসিনক্রোনাস অপারেশনগুলি যখন সম্পন্ন হয় তখন ত্রুটিগুলি ঘটতে পারে। Dart-এ অ্যাসিনক্রোনাস কোডের জন্য ত্রুটি পরিচালনার কৌশলগুলি সঠিকভাবে ব্যবহার করা প্রয়োজন যাতে অ্যাপ্লিকেশনটি নিরাপদ এবং কার্যকর থাকে। আসুন আমরা Dart-এ অ্যাসিনক্রোনাস কোডের জন্য ত্রুটি পরিচালনার বিভিন্ন পদ্ধতি দেখি।
১. Future ত্রুটি পরিচালনা
যখন একটি Future ত্রুটি ঘটায়, তখন এটি একটি Exception তুলে ধরে। আপনি try-catch ব্লক ব্যবহার করে এই ত্রুটিগুলি ধরতে পারেন।
উদাহরণ:
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 2));
throw Exception("Failed to fetch data!"); // জাল ত্রুটি
}
Future<void> main() async {
try {
String data = await fetchData(); // Awaiting the future
print(data);
} catch (e) {
print("Error: $e"); // Output: Error: Exception: Failed to fetch data!
}
}
২. Stream ত্রুটি পরিচালনা
Streams এ ত্রুটিগুলি onError প্যারামিটার ব্যবহার করে বা try-catch ব্লকের মাধ্যমে পরিচালনা করা যায়।
উদাহরণ:
Stream<int> numberStream() async* {
yield 1;
yield 2;
throw Exception("Error in stream!"); // জাল ত্রুটি
yield 3;
}
Future<void> main() async {
// Stream এর মাধ্যমে মান গ্রহণ করা
await for (int number in numberStream().handleError((e) {
print("Stream Error: $e"); // Output: Stream Error: Exception: Error in stream!
})) {
print(number);
}
}
৩. Future.catchError
আপনি Future.catchError ব্যবহার করে ত্রুটিগুলি পরিচালনা করতে পারেন, যা আপনার কোডকে আরও পরিষ্কার এবং পাঠযোগ্য করে তোলে।
উদাহরণ:
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 2));
throw Exception("Failed to fetch data!");
}
Future<void> main() async {
fetchData().then((data) {
print(data);
}).catchError((e) {
print("Error: $e"); // Output: Error: Exception: Failed to fetch data!
});
}
৪. Custom Error Handling
আপনি কাস্টম ত্রুটি ক্লাস তৈরি করে এবং সেগুলি ব্যবহার করে আরও বিস্তারিত ত্রুটি পরিচালনা করতে পারেন।
উদাহরণ:
class FetchDataException implements Exception {
final String message;
FetchDataException(this.message);
@override
String toString() => "FetchDataException: $message";
}
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 2));
throw FetchDataException("Failed to fetch data!"); // জাল কাস্টম ত্রুটি
}
Future<void> main() async {
try {
String data = await fetchData();
print(data);
} catch (e) {
print(e); // Output: FetchDataException: Failed to fetch data!
}
}
উপসংহার
অ্যাসিনক্রোনাস কোডে ত্রুটি পরিচালনা করা অত্যন্ত গুরুত্বপূর্ণ। Dart-এ Future, Stream, এবং try-catch ব্লক ব্যবহার করে আপনি সহজেই ত্রুটিগুলি পরিচালনা করতে পারেন। আপনার অ্যাপ্লিকেশনটি সুরক্ষিত ও কার্যকর রাখতে এবং ব্যবহারকারীর জন্য একটি উন্নত অভিজ্ঞতা নিশ্চিত করতে সঠিক ত্রুটি পরিচালনার কৌশলগুলো ব্যবহার করা জরুরি।
Read more