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.
Fungsi divide di bawah punya silent catch yang mengembalikan null — pemanggil tidak tahu ada error dan harus cek null di mana-mana.
Refactor dengan pola yang benar:
DivisionByZeroError extends Error dengan pesan "Tidak bisa membagi dengan nol".divide(a, b) — jika b === 0, throw new DivisionByZeroError(). Jika tidak, return a / b.safeDivide(a, b) yang memanggil divide di dalam try/catch. Jika tertangkap DivisionByZeroError, kembalikan string "Error: Tidak bisa membagi dengan nol". Error lain tetap di-rethrow.Uji dengan tiga pemanggilan:
safeDivide(10, 2) → 5safeDivide(10, 0) → string errordivide(20, 4) langsung (tanpa safeDivide) → 5