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
कोड के बारे में बताया गया है जो आपको दिख सकते हैं:
कोड | मतलब |
---|---|
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 तब दिखता है, जब कोई ऐसी गड़बड़ी होती है जिसे किसी भी अन्य गड़बड़ी कोड का इस्तेमाल करके, कैटगरी में नहीं रखा जा सकता. उदाहरण के लिए, यह गड़बड़ी तब दिख सकती है, जब किसी बाहरी एपीआई से मिली स्टेटस वैल्यू में, गड़बड़ी की मूल वजह के बारे में ज़रूरत के मुताबिक जानकारी न हो. |