Flutter मोबाइल विकास · पाठ

Async में त्रुटि प्रबंधन

अतुल्यकालिक कार्यों के लिए सुदृढ़ त्रुटि प्रबंधन रणनीतियाँ लागू करें, ताकि आपका ऐप नेटवर्क विफलताओं और अपवादों को सहजता से संभाल सके।

पाठ 3, कुल 4 में से11 चरण

Async में त्रुटि प्रबंधन, CoddyKit पर Flutter मोबाइल विकास का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Flutter मोबाइल विकास सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Flutter मोबाइल विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

अनिश्चित अतुल्यकालिक त्रुटियों को संभालना

अतुल्यकालिक संचालन, जैसे इंटरनेट से डेटा प्राप्त करना या फ़ाइलें पढ़ना, स्वभावतः अनिश्चित होते हैं। वे सफल हो सकते हैं, विफल हो सकते हैं या समय-सीमा भी समाप्त हो सकती है।

ऐप को क्रैश होने से रोकने और सहज उपयोगकर्ता अनुभव देने के लिए विश्वसनीय त्रुटि प्रबंधन अत्यंत महत्वपूर्ण है। यह आपको इन विफलताओं को सहजता से संभालने की सुविधा देता है।

अतुल्यकालिक संचालन के लिए `try-catch`

Dart का परिचित try-catch ब्लॉक अतुल्यकालिक कोड में अपवादों को संभालने का आपका मुख्य उपकरण है। जब कोई await एक्सप्रेशन त्रुटि उत्पन्न करता है, तो उसे आसपास के try-catch ब्लॉक द्वारा पकड़ा जा सकता है।

  • try: ऐसा कोड रखता है जो अपवाद उत्पन्न कर सकता है।
  • catch: अपवाद होने पर उसे पकड़ता और संभालता है।
  • on: (वैकल्पिक) विशिष्ट प्रकार के अपवादों को पकड़ता है।

अनुकरण की गई त्रुटि पकड़ना

आइए try-catch को कार्य करते हुए देखें। यह उदाहरण किसी async फ़ंक्शन के भीतर Exception उत्पन्न करके नेटवर्क त्रुटि का अनुकरण करता है। ध्यान दीजिए कि catch इसे कैसे संभालता है।

import 'dart:async';

Future<String> fetchData() async {
  await Future.delayed(Duration(seconds: 1));
  // Simulate a network error
  throw Exception("Failed to fetch data!");
  return "Data received"; // This line won't be reached
}

void main() async {
  print("Starting data fetch...");
  try {
    String data = await fetchData();
    print("Success: $data");
  } catch (e) {
    print("Error caught: $e");
  } finally {
    print("Fetch attempt complete.");
  }
}

विशिष्ट अपवाद प्रकारों को संभालना

कभी-कभी आप अलग-अलग प्रकार की त्रुटियों को अलग-अलग तरीकों से संभालना चाहते हैं। on कीवर्ड आपको विशिष्ट अपवाद प्रकारों को पकड़ने देता है, जिससे आपका त्रुटि प्रबंधन अधिक सटीक हो जाता है।

उदाहरण के लिए, आप SocketException (नेटवर्क समस्या) को सामान्य Exception से अलग तरीके से संभाल सकते हैं।

लक्षित त्रुटि प्रबंधन

यहाँ हम दो प्रकार की त्रुटियाँ परिभाषित करते हैं: एक कस्टम NetworkException और एक सामान्य Exception। on क्लॉज़ हमें प्रत्येक के लिए विशिष्ट प्रबंधन प्रदान करने देता है।

import 'dart:async';

class NetworkException implements Exception {
  final String message;
  NetworkException(this.message);
  @override
  String toString() => 'NetworkException: $message';
}

Future<void> performNetworkCall(bool shouldFailNetwork) async {
  await Future.delayed(Duration(milliseconds: 500));
  if (shouldFailNetwork) {
    throw NetworkException("No internet connection!");
  } else {
    throw Exception("An unknown error occurred.");
  }
}

void main() async {
  print("Attempt 1: Simulate network failure");
  try {
    await performNetworkCall(true);
  } on NetworkException catch (e) {
    print("Caught specific network error: ${e.message}");
  } catch (e) {
    print("Caught generic error: $e");
  }

  print("\nAttempt 2: Simulate unknown error");
  try {
    await performNetworkCall(false);
  } on NetworkException catch (e) {
    print("Caught specific network error: ${e.message}");
  } catch (e) {
    print("Caught generic error: $e");
  }
}

`finally` के साथ सफ़ाई सुनिश्चित करना

finally ब्लॉक try-catch कथन का एक वैकल्पिक भाग है। इस ब्लॉक के अंदर का कोड हमेशा चलेगा, चाहे कोई अपवाद उत्पन्न हुआ हो या पकड़ा गया हो।

यह सफ़ाई वाले कामों के लिए बिल्कुल उपयुक्त है, जैसे फ़ाइल स्ट्रीम बंद करना या लोडिंग संकेतक हटाना, ताकि संसाधनों का उचित प्रबंधन सुनिश्चित हो सके।

वैकल्पिक तरीका: `Future.catchError`

हालाँकि try-catch, async/await के साथ अच्छी तरह काम करता है, आप Future ऑब्जेक्ट पर सीधे उसकी .catchError() विधि का उपयोग करके भी त्रुटियाँ संभाल सकते हैं। इसका उपयोग अक्सर Futures को श्रृंखलाबद्ध करते समय या तुरंत await का उपयोग न करने पर किया जाता है।

यह एक ऐसा फ़ंक्शन लेता है जिसे Future के त्रुटि के साथ पूरा होने पर बुलाया जाएगा।

`catchError` के साथ त्रुटियाँ संभालना

यहाँ बताया गया है कि .catchError() का उपयोग कैसे किया जा सकता है। ध्यान दीजिए कि त्रुटि को स्वयं त्रुटि प्रबंधन के लिए async फ़ंक्शन या await की आवश्यकता के बिना, Future की पूर्णता श्रृंखला के एक भाग के रूप में संभाला जाता है।

import 'dart:async';

Future<String> getUserData() {
  return Future.delayed(Duration(seconds: 1)).then((_) {
    throw Exception("User data not found!");
    return "User data"; // Unreachable
  });
}

void main() {
  print("Fetching user data...");
  getUserData().then((data) {
    print("Success: $data");
  }).catchError((error) {
    print("Error with .catchError(): $error");
  }).whenComplete(() {
    print("User data fetch completed.");
  });
}

त्रुटि प्रबंधन की अच्छी प्रथाएँ

प्रभावी त्रुटि प्रबंधन आपके ऐप को विश्वसनीय और उपयोगकर्ता-अनुकूल बनाता है:

  • त्रुटियों का लॉग रखें: डीबगिंग के लिए त्रुटियाँ दर्ज करने वाले लॉगिंग फ़्रेमवर्क का उपयोग करें।
  • प्रतिक्रिया दें: उपयोगकर्ता को बताएं कि क्या गलत हुआ (जैसे, "नेटवर्क उपलब्ध नहीं है")।
  • पुनः प्रयास तंत्र: अस्थायी नेटवर्क समस्याओं के लिए पुनः प्रयास का विकल्प देने पर विचार करें।
  • खाली catch ब्लॉक से बचें: त्रुटियों को हमेशा संभालें या दोबारा उत्पन्न करें; उन्हें बस अनदेखा न करें।

अतुल्यकालिक त्रुटि प्रबंधन जाँच

निम्नलिखित Dart कोड स्निपेट पर विचार कीजिए। इसके त्रुटि प्रबंधन के बारे में कौन-से कथन सही हैं?

import 'dart:async';

Future<String> riskyOperation() async {
  await Future.delayed(Duration(milliseconds: 100));
  if (DateTime.now().second % 2 == 0) {
    throw FormatException("Invalid data format!");
  }
  return "Data processed.";
}

void main() async {
  try {
    String result = await riskyOperation();
    print("Result: $result");
  } on FormatException catch (e) {
    print("Specific error: ${e.message}");
  } catch (e) {
    print("Generic error: $e");
  } finally {
    print("Operation finished.");
  }
}

पुनरावलोकन: अतुल्यकालिक त्रुटियों में महारत

इस पाठ में हमने अतुल्यकालिक Dart और Flutter ऐप्लिकेशन में त्रुटियों को संभालने का तरीका देखा। आपने सीखा:

  • विश्वसनीय त्रुटि प्रबंधन का महत्व।
  • async/await के साथ try-catch का उपयोग।
  • on के साथ विशिष्ट अपवादों को पकड़ना।
  • finally के साथ सफ़ाई सुनिश्चित करना।
  • एक वैकल्पिक तरीका: Future.catchError()।
  • मज़बूत ऐप बनाने की सर्वोत्तम प्रथाएँ।

स्थिर और उपयोगकर्ता-अनुकूल मोबाइल अनुभव बनाने के लिए उचित त्रुटि प्रबंधन महत्वपूर्ण है!

शुरुआत निःशुल्क

एआई शिक्षक के साथ Dart सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
22
पाठ
88

अक्सर पूछे जाने वाले प्रश्न

क्या “Async में त्रुटि प्रबंधन” पाठ निःशुल्क है?

हाँ — Flutter मोबाइल विकास अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Async में त्रुटि प्रबंधन” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Flutter मोबाइल विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Async में त्रुटि प्रबंधन” में मैं क्या सीखूँगा?

अतुल्यकालिक कार्यों के लिए सुदृढ़ त्रुटि प्रबंधन रणनीतियाँ लागू करें, ताकि आपका ऐप नेटवर्क विफलताओं और अपवादों को सहजता से संभाल सके। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Flutter मोबाइल विकास का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Flutter मोबाइल विकास शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Flutter मोबाइल विकास शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“Async में त्रुटि प्रबंधन” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Flutter मोबाइल विकास पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Flutter मोबाइल विकास पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Futures और Async/Await
  2. HTTP अनुरोध और JSON
  3. Async में त्रुटि प्रबंधन
  4. Streams और प्रतिक्रियाशील डेटा
← Flutter मोबाइल विकास पर वापस जाएँ