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

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

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

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

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

Home API में मौजूद कोई भी तरीका, 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 पाने की कोशिश की जाती है जो रजिस्टर नहीं किया गया है, तो आपको यह मैसेज दिखेगा. Android पर होम को शुरू करना देखें.
UNAUTHENTICATED कॉल करने वाले की पहचान नहीं की जा सकती या अनुरोध में पुष्टि करने के लिए मान्य क्रेडेंशियल नहीं हैं.
UNAVAILABLE यह सेवा उपलब्ध नहीं है. ज़्यादातर मामलों में, यह एक अस्थायी स्थिति होती है. इसे ठीक करने के लिए, बैकऑफ़ की मदद से फिर से कोशिश करें. ध्यान दें कि बार-बार किए जाने वाले ऐसे ऑपरेशन को दोबारा करने से हमेशा सुरक्षित नहीं होता.
UNIMPLEMENTED अनुरोध की गई कार्रवाई, इस सेवा में लागू नहीं की गई है, काम नहीं करती है या चालू नहीं है.
UNKNOWN ऐसी गड़बड़ी जिसके बारे में कोई जानकारी नहीं है. आम तौर पर, UNKNOWN तब दिखता है, जब कोई ऐसी गड़बड़ी होती है जिसे किसी भी अन्य गड़बड़ी कोड का इस्तेमाल करके, कैटगरी में नहीं रखा जा सकता. उदाहरण के लिए, यह गड़बड़ी तब दिख सकती है, जब किसी बाहरी एपीआई से मिली स्टेटस वैल्यू में, गड़बड़ी की मूल वजह के बारे में ज़रूरत के मुताबिक जानकारी न हो.