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