गड़बड़ी ठीक करना

Kotlin में चेक किए गए अपवाद का इस्तेमाल नहीं किया जा सकता. इससे गड़बड़ी को मैनेज करना आसान हो जाता है, क्योंकि आपके पास सिर्फ़ उन अपवादों को मैनेज करने का विकल्प होता है जिन्हें ठीक किया जा सकता है. साथ ही, आपको हर संभावित अपवाद को साफ़ तौर पर मैनेज करने की ज़रूरत नहीं होती, इसलिए आपका कोड कम उलझा हुआ होता है और अपने मुख्य मकसद पर ज़्यादा फ़ोकस रहता है.

ठीक की जा सकने वाली गड़बड़ियां ऐसी समस्याएं होती हैं जिन्हें डेवलपर अपने ऐप्लिकेशन में ठीक कर सकता है. उदाहरण के लिए, अगर किसी कॉल में इस्तेमाल किया गया आईडी मान्य नहीं है, तो एपीआई invalid data मैसेज के साथ HomeException दिखाता है. इसके बाद, ऐप्लिकेशन डेवलपर के पास, कैश मेमोरी से उस आईडी को हटाने या उपयोगकर्ता को "स्ट्रक्चर नहीं मिला" जैसा मैसेज दिखाने का विकल्प होता है.

ठीक की जा सकने वाली गड़बड़ी को मैनेज करने का उदाहरण:

val result =
   try {
     homeManager.requestPermissions()
   } catch (e: HomeException) {
     PermissionsResult(
       PermissionsResultStatus.ERROR,
       "Got HomeException with error: ${e.message}",
     )
   }

Home के एपीआई में मौजूद कोई भी तरीका, HomeException को ट्रिगर कर सकता है. इसलिए, हमारा सुझाव है कि आप सभी कॉल पर HomeException को पकड़ने के लिए, try-catch ब्लॉक का इस्तेमाल करें.

HomeException को मैनेज करते समय, इसकी code और message फ़ील्ड की जांच करें, ताकि यह पता चल सके कि क्या गड़बड़ी हुई है.

बिना मैनेज किए गए किसी भी अपवाद की वजह से, आपका ऐप्लिकेशन क्रैश हो जाएगा.

यहां दी गई टेबल में, HomeException कोड के बारे में बताया गया है. ये कोड आपको दिख सकते हैं:

टेबल: HomeException कोड
कोड मतलब
ABORTED कार्रवाई रद्द कर दी गई. आम तौर पर, यह गड़बड़ी तब दिखती है, जब एक साथ कई लेन-देन करने से जुड़ी कोई समस्या होती है. जैसे, क्रम की जांच में गड़बड़ी या लेन-देन को रोकना.
ALREADY_EXISTS जिस संसाधन या इकाई को बनाने की कोशिश की जा रही है वह पहले से मौजूद है. उदाहरण के लिए, थर्मोस्टैट के लिए नाम वाला शेड्यूल.
API_NOT_CONNECTED क्लाइंट ने किसी ऐसे एपीआई से किसी तरीके को कॉल करने की कोशिश की जो कनेक्ट नहीं हो पाया. ऐसा तब हो सकता है, जब डिवाइस ऑफ़लाइन हो या उस पर वह एपीआई काम न करता हो जिसे कॉल किया जा रहा है.
CANCELLED कार्रवाई रद्द कर दी गई थी. आम तौर पर, कॉल करने वाले ने ऐसा किया था.
DATA_LOSS डेटा का मिट जाना या उसमें गड़बड़ी होना, जिसे ठीक नहीं किया जा सकता.
DEADLINE_EXCEEDED कार्रवाई पूरी होने से पहले ही, समयसीमा खत्म हो गई. सिस्टम की स्थिति बदलने वाली कार्रवाइयों के लिए, यह गड़बड़ी तब भी दिख सकती है, जब कार्रवाइयां पूरी हो गई हों.
FAILED_PRECONDITION कार्रवाई अस्वीकार कर दी गई, क्योंकि सिस्टम ऐसी स्थिति में नहीं है जिससे कार्रवाई पूरी की जा सके. उदाहरण के लिए, अगर आपने पहले से बंद ऑवन को चालू करने के लिए, stop को कहा है, तो आपको यह मैसेज दिख सकता है.
INTERNAL अंदरूनी गड़बड़ियां. इसका मतलब है कि मौजूदा सिस्टम के लिए, कुछ ऐसे इनवैरिएंट नहीं हैं जिनकी उम्मीद की जाती है. गड़बड़ी का यह कोड, गंभीर गड़बड़ियों के लिए है.
INVALID_ARGUMENT आपने ऐसा आर्ग्युमेंट दिया है जो वैल्यू की अनुमानित रेंज से बाहर है.
NOT_FOUND आपने ऐसी इकाई या संसाधन की जानकारी दी है जो नहीं मिल रहा है. उदाहरण के लिए, मीडिया प्लेयर डिवाइस पर activateAudioTrack को कॉल करते समय, ऐसा ट्रैक आईडी डालना जो मौजूद नहीं है.
OUT_OF_RANGE सिस्टम की मौजूदा स्थिति के आधार पर, पैरामीटर की वैल्यू मान्य सीमा से ज़्यादा है. यह मैसेज तब दिखता है, जब वैल्यू उन वैल्यू की रेंज में हो जिन्हें एपीआई कॉल स्वीकार कर सकता है, लेकिन मौजूदा संदर्भ में काम की नहीं है.
PERMISSION_DENIED आपके पास बताई गई कार्रवाई करने की अनुमति नहीं है. इस गड़बड़ी के कोड का मतलब यह नहीं है कि अनुरोध मान्य है.
RESOURCE_EXHAUSTED कुछ संसाधन का इस्तेमाल कर लिया गया है. उदाहरण के लिए, यह तब दिख सकता है, जब कोई व्यक्ति पालतू जानवर के फ़ीड डिवाइस पर dispense को कॉल करता है और यूनिट में अब कोई फ़ूड नहीं बचा है.
SDK_INITIALIZATION_MISSING_INFO SDK टूल पूरी तरह से शुरू नहीं हुआ था. उदाहरण के लिए, अगर किसी ऐसे ट्रैट के लिए TraitFactory पाने की कोशिश की जाती है जो रजिस्टर नहीं किया गया है, तो आपको यह मैसेज दिखेगा. शुरू करना देखें.
UNAUTHENTICATED कॉल करने वाले की पहचान नहीं की जा सकती या अनुरोध में पुष्टि करने के लिए मान्य क्रेडेंशियल नहीं हैं.
UNAVAILABLE यह सेवा उपलब्ध नहीं है. ऐसा हो सकता है कि यह कुछ समय के लिए हो रहा हो. इसे ठीक करने के लिए, बैकऑफ़ की मदद से फिर से कोशिश करें. ध्यान दें कि बार-बार किए जाने वाले ऐसे कामों को दोबारा करने से हमेशा सुरक्षित नहीं होता.
UNIMPLEMENTED अनुरोध की गई कार्रवाई, इस सेवा में लागू नहीं की गई है, काम नहीं करती है या चालू नहीं है.
UNKNOWN ऐसी गड़बड़ी जिसके बारे में कोई जानकारी नहीं है. आम तौर पर, UNKNOWN तब दिखता है, जब कोई ऐसी गड़बड़ी होती है जिसे किसी भी अन्य गड़बड़ी कोड का इस्तेमाल करके, कैटगरी में नहीं रखा जा सकता. उदाहरण के लिए, यह गड़बड़ी तब दिख सकती है, जब किसी बाहरी एपीआई से मिली स्थिति की वैल्यू में, गड़बड़ी की मूल वजह के बारे में ज़रूरत के मुताबिक जानकारी न हो.