Apakah praktik yang baik untuk menggunakan pengecualian dan melempar / menangkap pengecualian daripada mengembalikan 0 atau 1 dari fungsi dan kemudian menggunakan if / else untuk menangani kesalahan. Dengan demikian, membuatnya lebih mudah untuk memberi tahu pengguna tentang masalah tersebut.
Tidak tidak Tidak!
Jangan gabungkan pengecualian dan kesalahan. Pengecualian, yah, luar biasa. Kesalahan tidak. Saat Anda meminta pengguna untuk memasukkan jumlah produk, dan pengguna memasukkan "halo", itu adalah kesalahan. Ini bukan pengecualian: tidak ada yang luar biasa dalam melihat input yang tidak valid dari pengguna. Mengapa Anda tidak dapat menggunakan pengecualian dalam kasus yang tidak biasa, seperti saat memvalidasi input? Orang lain sudah menjelaskannya, dan menunjukkan alternatif valid untuk input validasi.
Ini juga berarti bahwa pengguna tidak peduli tentang pengecualian Anda , dan menunjukkan pengecualian itu tidak ramah dan berbahaya . Misalnya, pengecualian selama eksekusi query SQL sering mengungkapkan query itu sendiri. Yakin ingin mengambil risiko untuk menampilkan pesan seperti itu kepada semua orang?
lebih dari 1 hal bisa salah, seperti masalah basis data, entri duplikat, masalah server, dll. Ketika masalah terjadi saat pendaftaran, pengguna harus mengetahuinya.
Salah. Sebagai pengguna, saya tidak perlu tahu masalah basis data Anda, entri rangkap, dll. Saya benar-benar tidak peduli dengan masalah Anda . Apa yang saya lakukan perlu tahu adalah bahwa saya masuk username yang sudah ada. Seperti yang sudah dikatakan, input yang salah dari saya harus memicu kesalahan, bukan pengecualian.
Bagaimana cara menghasilkan kesalahan itu? Itu tergantung pada konteksnya. Untuk nama pengguna yang sudah digunakan, saya ingin melihat bendera merah kecil muncul di dekat nama pengguna, bahkan sebelum mengirimkan formulir, mengatakan bahwa nama pengguna sudah digunakan. Tanpa JavaScript, bendera yang sama harus muncul setelah pengiriman.
Untuk kesalahan lain, Anda akan menampilkan satu halaman penuh dengan kesalahan, atau memilih cara lain untuk memberi tahu pengguna bahwa ada kesalahan (misalnya pesan yang akan muncul, kemudian menghilang di bagian atas halaman). Pertanyaannya kemudian lebih terkait dengan pengalaman pengguna daripada pemrograman.
Dari sudut pandang programmer, tergantung dari jenis kesalahan, Anda akan menyebarkannya dengan cara yang berbeda. Misalnya, dalam kasus nama pengguna sudah diambil, permintaan AJAX untuk http://example.com/?ajax=1&user-exists=John
akan mengembalikan objek JSON yang menunjukkan:
- Bahwa pengguna sudah ada,
- Pesan kesalahan ditampilkan kepada pengguna.
Poin kedua penting: Anda ingin memastikan bahwa pesan yang sama muncul baik ketika mengirimkan formulir dengan JavaScript dinonaktifkan dan mengetik nama pengguna duplikat dengan JavaScript diaktifkan. Anda tidak ingin menduplikasi teks pesan kesalahan dalam kode sumber sisi server dan dalam JavaScript!
Ini sebenarnya teknik yang digunakan oleh situs web Stack Exhange. Sebagai contoh jika saya mencoba untuk memvotasikan jawaban saya sendiri, respons AJAX berisi kesalahan untuk ditampilkan:
{"Success":false,"Warning":false,"NewScore":0,"Message":"You can't vote for your own post.",
"Refresh":false}
Anda juga dapat memilih pendekatan lain, dan mempraset kesalahan di halaman HTML sebelum formulir diisi. Pro: Anda tidak perlu mengirim pesan kesalahan dalam respons AJAX. Cons: bagaimana dengan aksesibilitas? Cobalah menelusuri halaman tanpa CSS, dan Anda akan melihat semua kesalahan yang mungkin muncul.