Contoh Pengecualian dengan JSON dalam JavaScript
Misalkan 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 bahwa metode JSON.parse akan
melemparkan pengecualian jika JSON tidak benar.
Mari kita tangkap pengecualian ini:
try {
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
} catch (error) {
// merespons pengecualian dengan cara tertentu
}
Namun, bisa jadi JSON itu sendiri benar, tetapi tidak mengandung field yang kita butuhkan, misalnya, tidak ada field harga:
let json = '{"product": "apple", "amount": 5}'; // tidak ada harga
Mari kita katakan bahwa ini juga merupakan situasi pengecualian dan dalam kasus seperti itu kita akan melemparkan 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 jumlah produk tidak ada'
};
}
} catch (error) {
// merespons pengecualian dengan cara tertentu
}
Sekarang blok catch akan menerima dua tipe
pengecualian: baik JSON secara umum tidak benar,
dan kemudian akan ada pengecualian tipe SyntaxError,
atau JSON benar, tetapi tidak mengandung field
yang kita butuhkan, dan kemudian akan ada pengecualian tipe
ProductCostError.
Mari kita dalam blok catch menangkap
tipe-tipe 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 jumlah produk tidak ada'
};
}
} catch (error) {
if (error.name == 'SyntaxError') {
alert('JSON produk tidak benar');
} else if (error.name == 'ProductCostError') {
alert('Produk tidak memiliki harga atau jumlah');
}
}
Misalkan kepada Anda datang JSON dengan bentuk seperti ini:
let json = `[
{
"name": "user1",
"age": 25,
"salary": 1000
},
{
"name": "user2",
"age": 26,
"salary": 2000
},
{
"name": "user3",
"age": 27,
"salary": 3000
}
]`;
Periksa JSON ini untuk kebenaran umum saat parsing, dan setelah parsing periksa bahwa hasilnya adalah sebuah array, bukan sesuatu yang lain. Jika hasilnya bukan array - lemparkan pengecualian.