我試圖拋出一個異常(不使用try catch塊),並且我的程序在異常拋出後立即完成。有沒有辦法在拋出異常之後繼續執行我的程序?我拋出了我在另一個類中定義的InvalidEmployeeTypeException,但是我希望程序在拋出後繼續執行。在java拋出異常後繼續執行
private void getData() throws InvalidEmployeeTypeException{
System.out.println("Enter filename: ");
Scanner prompt = new Scanner(System.in);
inp = prompt.nextLine();
File inFile = new File(inp);
try {
input = new Scanner(inFile);
} catch (FileNotFoundException ex) {
ex.printStackTrace();
System.exit(1);
}
String type, name;
int year, salary, hours;
double wage;
Employee e = null;
while(input.hasNext()) {
try{
type = input.next();
name = input.next();
year = input.nextInt();
if (type.equalsIgnoreCase("manager") || type.equalsIgnoreCase("staff")) {
salary = input.nextInt();
if (type.equalsIgnoreCase("manager")) {
e = new Manager(name, year, salary);
}
else {
e = new Staff(name, year, salary);
}
}
else if (type.equalsIgnoreCase("fulltime") || type.equalsIgnoreCase("parttime")) {
hours = input.nextInt();
wage = input.nextDouble();
if (type.equalsIgnoreCase("fulltime")) {
e = new FullTime(name, year, hours, wage);
}
else {
e = new PartTime(name, year, hours, wage);
}
}
else {
throw new InvalidEmployeeTypeException();
input.nextLine();
continue;
}
} catch(InputMismatchException ex)
{
System.out.println("** Error: Invalid input **");
input.nextLine();
continue;
}
//catch(InvalidEmployeeTypeException ex)
//{
//}
employees.add(e);
}
}
你不覺得這不是一個如何使用異常的好例子嗎? – manub 2012-03-22 17:17:42
這工作完美。我能夠處理錯誤處理並繼續執行 – 2012-03-22 17:37:31
我花了一段時間才明白,爲什麼這段代碼在有禮貌地開頭的評論中「不是一個好例子」。 'input.nextLine();'從不執行。 – Reg 2017-12-08 13:05:18