C# Language
स्ट्रिंग को अन्य प्रकारों में परिवर्तित करते समय FormatException को हैंडल करना
खोज…
स्ट्रिंग को पूर्णांक में परिवर्तित करना
string
को integer
स्पष्ट रूप से परिवर्तित करने के लिए विभिन्न विधियाँ उपलब्ध हैं, जैसे:
Convert.ToInt16();
Convert.ToInt32();
Convert.ToInt64();
int.Parse();
लेकिन इन सभी तरीकों से एक FormatException
को फेंक दिया जाएगा, अगर इनपुट स्ट्रिंग में गैर-संख्यात्मक वर्ण हैं। इसके लिए, हमें उन्हें ऐसे मामलों में निपटने के लिए एक अतिरिक्त अपवाद हैंडलिंग ( try..catch
) लिखने की आवश्यकता है।
उदाहरणों के साथ स्पष्टीकरण:
तो, हमारे इनपुट हो:
string inputString = "10.2";
उदाहरण 1: Convert.ToInt32()
int convertedInt = Convert.ToInt32(inputString); // Failed to Convert
// Throws an Exception "Input string was not in a correct format."
नोट: वही अन्य वर्णित विधियों के लिए जाता है - Convert.ToInt16();
और Convert.ToInt64();
उदाहरण 2: int.Parse()
int convertedInt = int.Parse(inputString); // Same result "Input string was not in a correct format.
हम इसे कैसे दरकिनार करते हैं?
जैसा कि पहले बताया गया था, अपवादों को संभालने के लिए हमें आमतौर पर एक try..catch
आवश्यकता होती try..catch
नीचे दिखाया गया है:
try
{
string inputString = "10.2";
int convertedInt = int.Parse(inputString);
}
catch (Exception Ex)
{
//Display some message, that the conversion has failed.
}
लेकिन, कोशिश करने try..catch
जगह का उपयोग करना एक अच्छा अभ्यास नहीं होगा, और कुछ ऐसे परिदृश्य भी हो सकते हैं जहां हम इनपुट गलत होने पर 0
देना चाहते थे, (यदि हम उपरोक्त विधि का पालन करते हैं तो हमें 0
से convertedInt
करने की आवश्यकता है पकड़ ब्लॉक)। ऐसे परिदृश्यों को संभालने के लिए हम एक विशेष विधि का उपयोग कर सकते हैं जिसे .TryParse()
कहा जाता है।
.TryParse()
विधि में एक आंतरिक अपवाद हैंडलिंग है, जो आपको out
पैरामीटर को आउटपुट देगा, और एक बूलियन मान देता है जो रूपांतरण स्थिति का संकेत देता है ( true
यदि रूपांतरण सफल हुआ था, तो false
अगर यह विफल हुआ)। वापसी मूल्य के आधार पर हम रूपांतरण की स्थिति निर्धारित कर सकते हैं। आइए एक उदाहरण देखें:
उपयोग 1: एक बूलियन चर में रिटर्न वैल्यू स्टोर करें
int convertedInt; // Be the required integer
bool isSuccessConversion = int.TryParse(inputString, out convertedInt);
हम रूपांतरण स्थिति की जांच करने के लिए निष्पादन के बाद चर isSuccessConversion
जांच कर सकते हैं। यदि यह बात गलत है तो का मान convertedInt
हो जाएगा 0
(कोई वापसी मान की जाँच करने के लिए यदि आप चाहते हैं की जरूरत 0
रूपांतरण विफलता के लिए)।
उपयोग 2: if
साथ रिटर्न मान की जाँच करें
if (int.TryParse(inputString, out convertedInt))
{
// convertedInt will have the converted value
// Proceed with that
}
else
{
// Display an error message
}
उपयोग 3: रिटर्न वैल्यू की जांच किए बिना आप निम्नलिखित का उपयोग कर सकते हैं, यदि आप रिटर्न वैल्यू के बारे में परवाह नहीं करते हैं (परिवर्तित या नहीं, 0
ठीक रहेगा)
int.TryParse(inputString, out convertedInt);
// use the value of convertedInt
// But it will be 0 if not converted