Saya telah menulis sebuah fungsi yang meminta input dari pengguna sampai pengguna memasukkan bilangan bulat positif (angka alami). Seseorang berkata saya tidak boleh melempar dan menangkap pengecualian dalam fungsi saya dan harus membiarkan penelepon fungsi saya menangani mereka.
Saya ingin tahu apa yang dipikirkan pengembang lain tentang ini. Saya juga mungkin menyalahgunakan pengecualian dalam fungsi. Berikut kode di Jawa:
private static int sideInput()
{
int side = 0;
String input;
Scanner scanner = new Scanner(System.in);
do {
System.out.print("Side length: ");
input = scanner.nextLine();
try {
side = Integer.parseInt(input);
if (side <= 0) {
// probably a misuse of exceptions
throw new NumberFormatException();
}
}
catch (NumberFormatException numFormExc) {
System.out.println("Invalid input. Enter a natural number.");
}
} while (side <= 0);
return side;
}
Saya tertarik pada dua hal:
- Haruskah saya membiarkan penelepon khawatir tentang pengecualian? Maksud dari fungsi ini adalah ia mengganggu pengguna sampai pengguna memasukkan nomor alami. Apakah titik fungsi buruk? Saya tidak berbicara tentang UI (pengguna tidak bisa keluar dari loop tanpa input yang tepat), tetapi tentang input loop dengan pengecualian yang ditangani.
- Apakah Anda mengatakan bahwa pernyataan melempar (dalam hal ini) merupakan penyalahgunaan pengecualian? Saya dapat dengan mudah membuat bendera untuk memeriksa validitas nomor dan menampilkan pesan peringatan berdasarkan bendera itu. Tapi itu akan menambah lebih banyak baris ke kode dan saya pikir itu bisa dibaca apa adanya.
Masalahnya, saya sering menulis fungsi input terpisah. Jika pengguna harus memasukkan nomor beberapa kali, saya membuat fungsi terpisah untuk input yang menangani semua pengecualian dan batasan pemformatan.