ฉันได้เขียนฟังก์ชันที่ขอให้ผู้ใช้ป้อนข้อมูลจนกว่าผู้ใช้จะป้อนจำนวนเต็มบวก (จำนวนธรรมชาติ) ใครบางคนบอกว่าฉันไม่ควรโยนและจับข้อยกเว้นในฟังก์ชั่นของฉันและควรให้ผู้โทรของฟังก์ชั่นของฉันจัดการกับพวกเขา
ฉันสงสัยว่านักพัฒนาคนอื่นคิดอย่างไรกับเรื่องนี้ ฉันอาจใช้ข้อยกเว้นในทางที่ผิดในฟังก์ชั่น นี่คือรหัสใน Java:
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;
}
ฉันสนใจสองสิ่ง:
- ฉันควรให้ผู้โทรกังวลเกี่ยวกับข้อยกเว้นหรือไม่ จุดของฟังก์ชั่นคือมันจะกัดผู้ใช้จนกว่าผู้ใช้จะป้อนจำนวนธรรมชาติ จุดประสงค์ของฟังก์ชั่นไม่ดีหรือไม่? ฉันไม่ได้พูดถึง UI (ผู้ใช้ไม่สามารถออกจากลูปโดยไม่มีอินพุตที่เหมาะสม) แต่เกี่ยวกับอินพุตลูปที่มีข้อยกเว้นจัดการ
- คุณจะพูดว่าประโยคโยน (ในกรณีนี้) เป็นการใช้ผิดข้อยกเว้นหรือไม่? ฉันสามารถสร้างการตั้งค่าสถานะสำหรับการตรวจสอบความถูกต้องของหมายเลขและส่งออกข้อความเตือนตามการตั้งค่าสถานะนั้น แต่นั่นจะเพิ่มบรรทัดเพิ่มเติมลงในโค้ดและฉันคิดว่ามันอ่านได้อย่างสมบูรณ์แบบเหมือนเดิม
สิ่งที่ฉันมักจะเขียนฟังก์ชั่นอินพุตแยกต่างหาก หากผู้ใช้ต้องป้อนตัวเลขหลายครั้งฉันจะสร้างฟังก์ชันแยกต่างหากสำหรับอินพุตที่จัดการกับข้อยกเว้นและข้อ จำกัด การจัดรูปแบบทั้งหมด