我有一個java類,用戶提供一個文件路徑,如果路徑不存在,我要求他們再試一次。我的教授說我們應該用一個例外來解決這個問題。處理無效文件異常的最佳方法是什麼?
這裏是我當前如何做一個片段:
public class SalesUtil {
public static void processSales() {
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter sales file name: ");
String salesFile = keyboard.nextLine();
try {
Scanner scanFile = new Scanner(new File(salesFile));
//do stuff
}
} catch(FileNotFoundException fnfe) {
System.out.println("Invalid file name supplied, please try again.");
processSales();
}
}
}
在
do stuff
部分
嗯,我計算值和打印數據到控制檯。如果我在第一次嘗試時正確輸入正確的文件名,則所有數據都是正確的。如果數據不正確一次或多次不正確。
我想這是因爲在我的初始堆棧頂部添加了函數調用,並且在提供後續堆棧調用之前從不'出去'初始堆棧,直到提供了正確的文件爲止?
我對java還是一個新東西,並希望瞭解如何使用異常來解決此問題的一些提示。
這個問題太廣,通常回答,但你說得對,遞歸重新調用是一個壞主意。相反,將'scanner'變量放在方法的作用域中,將其設置在'try'塊中,並設置一個'(while scanner == null)'循環來包含提示和文件打開嘗試。 – chrylis