⊗jsSpExcJSE 149 of 294 menu

Contoh Pengecualian dengan JSON dalam JavaScript

Katakan kepada kita dari suatu tempat di dunia luar datang JSON dengan produk:

let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount);

Anda sudah tahu, kaedah JSON.parse akan membuang pengecualian jika JSON tidak betul. Mari tangkap pengecualian ini:

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // bertindak balas terhadap pengecualian dengan cara tertentu }

Walau bagaimanapun, mungkin berlaku bahawa JSON itu sendiri adalah betul, tetapi tidak mengandungi medan yang kita perlukan, contohnya, tiada medan harga:

let json = '{"product": "apple", "amount": 5}'; // tiada harga

Mari kita katakan bahawa ini juga merupakan situasi luar biasa dan dalam kes sedemikian kita akan membuang pengecualian pengguna kita sendiri:

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: 'harga atau kuantiti produk tiada' }; } } catch (error) { // bertindak balas terhadap pengecualian dengan cara tertentu }

Sekarang blok catch akan menerima dua jenis pengecualian: sama ada JSON tidak betul sama sekali, dan kemudian akan ada pengecualian jenis SyntaxError, atau JSON betul, tetapi tidak mengandungi medan yang kita perlukan, dan kemudian akan ada pengecualian jenis ProductCostError.

Mari dalam blok catch kita tangkap jenis pengecualian ini:

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: 'harga atau kuantiti produk tiada' }; } } catch (error) { if (error.name == 'SyntaxError') { alert('JSON produk tidak betul'); } else if (error.name == 'ProductCostError') { alert('Produk tiada harga atau kuantiti'); } }

Katakan kepada anda datang JSON dalam bentuk seperti ini:

let json = `[ { "name": "user1", "age": 25, "salary": 1000 }, { "name": "user2", "age": 26, "salary": 2000 }, { "name": "user3", "age": 27, "salary": 3000 } ]`;

Semak JSON ini untuk ketepatan umum apabila dihurai, dan selepas penghuraian semak bahawa hasilnya adalah array, bukan sesuatu yang lain. Jika hasilnya bukan array - buang pengecualian.

itpleshucs