जावास्क्रिप्ट में JSON अपवाद का उदाहरण
मान लीजिए कि बाहरी दुनिया से हमारे पास उत्पाद के साथ JSON आता है:
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
आप पहले से जानते हैं कि यदि JSON गलत है तो
विधि JSON.parse एक अपवाद फेंकेगी।
आइए इस अपवाद को पकड़ें:
try {
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
} catch (error) {
// अपवाद पर किसी तरह प्रतिक्रिया करते हैं
}
हालाँकि, ऐसा हो सकता है कि JSON अपने आप में सही हो लेकिन इसमें हमारे आवश्यक फ़ील्ड्स शामिल न हों, उदाहरण के लिए, कीमत का फ़ील्ड नहीं है:
let json = '{"product": "apple", "amount": 5}'; // कोई कीमत नहीं
आइए मान लें कि यह भी एक असाधारण स्थिति है और ऐसे मामले में हम अपना स्वयं का अपवाद फेंकेंगे:
try {
let json = '{"product": "apple", "amount": 5}';
let product = JSON.parse(json);
if (product.price !== undefined && product.amount !== undefined) {
alert(product.price * product.amount);
} else {
throw {
name: 'ProductCostError',
message: 'उत्पाद में कीमत या मात्रा अनुपस्थित है'
};
}
} catch (error) {
// अपवाद पर किसी तरह प्रतिक्रिया करते हैं
}
अब ब्लॉक catch दो प्रकार के अपवाद
प्राप्त करेगा: या तो JSON पूरी तरह से गलत है,
और तब SyntaxError प्रकार का अपवाद होगा,
या JSON सही है, लेकिन इसमें हमारे आवश्यक
फ़ील्ड्स नहीं हैं, और तब ProductCostError
प्रकार का अपवाद होगा।
आइए ब्लॉक catch में इन अपवादों के
प्रकारों को पकड़ें:
try {
let json = '{"product": "apple", "amount": 5}';
let product = JSON.parse(json);
if (product.price !== undefined && product.amount !== undefined) {
alert(product.price * product.amount);
} else {
throw {
name: 'ProductCostError',
message: 'उत्पाद में कीमत या मात्रा अनुपस्थित है'
};
}
} catch (error) {
if (error.name == 'SyntaxError') {
alert('अमान्य JSON उत्पाद');
} else if (error.name == 'ProductCostError') {
alert('उत्पाद में कीमत या मात्रा अनुपस्थित है');
}
}
मान लीजिए कि आपके पास इस प्रकार का JSON आता है:
let json = `[
{
"name": "user1",
"age": 25,
"salary": 1000
},
{
"name": "user2",
"age": 26,
"salary": 2000
},
{
"name": "user3",
"age": 27,
"salary": 3000
}
]`;
पार्सिंग के दौरान इस JSON की सामान्य शुद्धता की जाँच करें, और पार्सिंग के बाद जाँच करें कि परिणामस्वरूप एक सरणी प्राप्त होती है, न कि कुछ और। यदि परिणामस्वरूप सरणी नहीं मिलती है - तो एक अपवाद फेंकें।