Kotlin में त्रुटि प्रबंधन: try/catch और भी बहुत कुछ
त्रुटि प्रबंधन विश्वसनीय और स्थिर कोड लिखने के प्रमुख कार्यों में से एक है। Kotlin, एक आधुनिक प्रोग्रामिंग भाषा के रूप में, डेवलपर्स को अपवादों और असामान्य स्थितियों से निपटने के लिए कई शक्तिशाली उपकरण प्रदान करता है। इस लेख में हम क्लासिक try/catch तंत्र, null safety की विशेषताओं, साथ ही उन्नत दृष्टिकोणों: Result और sealed क्लासेज़ के उपयोग पर विस्तार से चर्चा करेंगे। यह सामग्री शुरुआती और अनुभवी प्रोग्रामर दोनों के लिए उपयोगी होगी जो अपने ज्ञान को संरचित करना चाहते हैं।
1. Kotlin में क्लासिक try/catch
Kotlin Java के साथ पूरी तरह से संगत है और पारंपरिक try/catch/finally ब्लॉक का समर्थन करता है। हालाँकि, महत्वपूर्ण अंतर हैं: Kotlin में अपवाद अनचेक्ड (unchecked) होते हैं, यानी कंपाइलर आपको उन्हें संभालने के लिए बाध्य नहीं करता। यह कोड को अधिक संक्षिप्त बनाता है, लेकिन सावधानी की आवश्यकता होती है।
सिंटैक्स इस प्रकार है:
try { // कोड जो अपवाद फेंक सकता है val result = riskyOperation() println("परिणाम: $result")} catch (e: Exception) { // अपवाद प्रबंधन println("एक त्रुटि हुई: ${e.message}")} finally { // ब्लॉक हर स्थिति में निष्पादित होता है println("ऑपरेशन समाप्त")}Kotlin में try को एक एक्सप्रेशन के रूप में उपयोग किया जा सकता है जो मान लौटाता है:
val number: Int? = try { "123".toInt()} catch (e: NumberFormatException) { null}println(number) // आउटपुट: 123यह विशेष रूप से तब उपयोगी होता है जब आप अनावश्यक वेरिएबल के बिना परिणाम या डिफ़ॉल्ट मान प्राप्त करना चाहते हैं।
2. Null Safety: टाइप स्तर पर त्रुटियों को रोकना
Kotlin की मुख्य विशेषताओं में से एक है null safety। भाषा कंपाइलेशन चरण में NullPointerException की समस्या को हल करती है। Kotlin में टाइप दो प्रकार के होते हैं: nullable (null हो सकते हैं) और non-null (नहीं हो सकते)।
उदाहरण:
var name: String = "Kotlin" // null नहीं हो सकता// name = null // कंपाइलेशन त्रुटि!
var nullableName: String? = "Kotlin" // null हो सकता हैnullableName = null // काम करता हैnullable टाइप के साथ सुरक्षित रूप से काम करने के लिए Kotlin कई ऑपरेटर प्रदान करता है:
- ?. (safe call) — केवल तभी ऑपरेशन करता है जब मान null न हो:
val length = nullableName?.length // यदि null है, तो nullval length = nullableName?.length ?: 0val length = nullableName!!.length // यदि null है — अपवादnull जाँच के लिए try/catch के बजाय null safety का उपयोग कोड को अधिक पठनीय और सुरक्षित बनाता है।
3. कार्यात्मक दृष्टिकोण के लिए Result का उपयोग
Kotlin एक अंतर्निहित क्लास Result<T> प्रदान करता है, जो एक ऑपरेशन के परिणाम का प्रतिनिधित्व करता है जो सफल या त्रुटि के साथ समाप्त हो सकता है। यह कार्यात्मक प्रोग्रामिंग पर आधारित try/catch का एक विकल्प है।
उपयोग का उदाहरण:
fun riskyDivision(a: Int, b: Int): Result<Int> { return runCatching { a / b }}
fun main() { val result = riskyDivision(10, 0)
result.onSuccess { value -> println("सफलता: $value") }.onFailure { error -> println("त्रुटि: ${error.message}") }
// या डिफ़ॉल्ट के साथ मान प्राप्त कर सकते हैं val value = result.getOrDefault(0) println("मान: $value")}runCatching एक सुविधाजनक रैपर फ़ंक्शन है जो किसी भी अपवाद को पकड़ता है और Result लौटाता है। आप Result को कॉल की श्रृंखला के साथ जोड़ सकते हैं, जो