Sto lavorando a qualcosa che dovrebbe essere abbastanza semplice. Ho il 95% del mio programma in funzione, ma un pezzo non soddisfa ancora il requisito. (FYI, questo è per un compito a casa, ma proverò di aver fatto un buon lavoro prima di venire qui.)
Il pezzo del compito: * La classe ProductionWorker deve generare un'eccezione chiamata InvalidPayRate quando riceve un numero negativo per la tariffa oraria o se i dati inseriti non sono numerici.
Ho la mia logica InvalidPayRate per la cattura di numeri negativi, ma non sono sicuro di come garantire che l'input sia numerico. Ecco il codice rilevante:
InvalidPayRate.java
public class InvalidPayRate extends Exception {
public InvalidPayRate(){
super("Error: Invalid Pay Rate.");
}
}
ProductionWorker.java
void setHourlyPayRate(double rate) throws InvalidPayRate
{
if (rate < 0.0){
throw new InvalidPayRate();
}
this.hourlyPayRate = rate;
}
test.java (questo è all'interno di una funzione principale)
//Set Rate details
try{
worker.setHourlyPayRate(-15.00);
System.out.println(worker.getHourlyPayRate() + ": Valid HourlyRate");
} catch (InvalidPayRate e) {
System.out.println(e.getMessage());
}
try{
worker.setHourlyPayRate(20.00);
System.out.println(worker.getHourlyPayRate() + ": Valid HourlyRate");
} catch (InvalidPayRate e) {
System.out.println(e.getMessage());
}
String testRate = "1v2.65";
try{
double rate = Double.parseDouble(testRate);
worker.setHourlyPayRate(rate);
System.out.println(worker.getHourlyPayRate() + ": Valid HourlyRate");
} catch (InvalidPayRate e) {
System.out.println(e.getMessage());
}
Al momento, 2 dei 3 test funzionano ... la voce Valid, la voce numero negativo (restituisce il mio errore personalizzato) ma la mia voce non numerica non funziona ... dà l'errore standard NumberFormatException.
Come posso eseguire un test logico per garantire che MY CUSTOM ERROR venga lanciato al posto di NumberFormatException?