Sto provando a generare un'eccezione (senza utilizzare un blocco catch try) e il mio programma termina subito dopo l'eccezione. C'è un modo che dopo aver lanciato l'eccezione, per poi continuare l'esecuzione del mio programma? Lancio InvalidEmployeeTypeException che ho definito in un'altra classe ma vorrei che il programma continuasse dopo che questo è stato lanciato.esecuzione continua dopo che un'eccezione è stata generata in 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);
}
}
Non pensi che questo non sia un buon esempio di come usare Eccezioni? – manub
Questo ha funzionato perfettamente. Sono stato in grado di occuparmi della gestione degli errori e continuare l'esecuzione –
Mi ci è voluto un po 'per capire perché questo codice non è "un buon esempio" nel cortese commento di apertura. 'input.nextLine();' non viene mai eseguito. – Reg