Latihan 1 dari materi Error Handling yang Baik di Clean Code — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
divide di editor mengembalikan null saat membagi dengan nol, jadi pemanggilnya gak tahu ada yang salah. Ubah jadi error yang terdengar:
Buat class DivisionByZeroError extends Error. Di constructor-nya panggil super('Tidak bisa membagi dengan nol') dan isi this.name = 'DivisionByZeroError'.
divide(a, b): kalau b === 0, throw new DivisionByZeroError(). Selain itu return a / b. Hapus try/catch dan return null yang lama.
safeDivide(a, b): panggil divide(a, b) di dalam try/catch. Kalau error-nya instanceof DivisionByZeroError, kembalikan teks 'Error: ' + e.message. Error lain dilempar ulang dengan throw e. Jangan mencetak di dalam safeDivide: tiga console.log di bawah yang mencetak.
Tiga console.log di bawah tetap ada. Output-nya harus:
5
Error: Tidak bisa membagi dengan nol
5
divide(1, 0) juga diuji sendiri: error yang keluar harus bernama DivisionByZeroError dengan pesan Tidak bisa membagi dengan nol, dan harus instanceof DivisionByZeroError.
Hint
null diam-diam bikin pemanggil gak tahu ada masalah. Ganti dengan error yang punya nama sendiri, lalu tangkap cuma jenis itu di safeDivide.
class DivisionByZeroError extends Error dengan super('Tidak bisa membagi dengan nol') dan this.name. divide melempar error itu kalau b === 0. safeDivide membungkus divide dengan try/catch dan memeriksa e instanceof DivisionByZeroError.
function safeDivide(a, b) { try { return divide(a, b); } catch (e) { if (e instanceof DivisionByZeroError) return 'Error: ' + e.message; throw e; } }
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...