Originariamente inviata da
Giuso
Infatti ho deciso di catturarle nel metodo che crea l'oggetto. Ma non ho capito una cosa. Se nel "try" metto un "if", se la condizione dell'if risulta falsa, viene eseguito il blocco catch? Perchè ho messo dei controlli con degli if, se vanno tutti a buon fine creo l'oggetto, altrimenti cè il blocco catch che mi ritorna -1(Quindi suppongo che il metodo termina li). Anche se l'if è falso mi ritorna 1, non so il motivo.
Per farti capire meglio, immagina un Rettangolo
codice:
public class Rettangolo {
private double larghezza;
private double altezza;
public Rettangolo(double larghezza, double altezza) {
if (larghezza < 0) {
throw new IllegalArgumentException("La larghezza non può essere negativa");
}
if (altezza < 0) {
throw new IllegalArgumentException("La altezza non può essere negativa");
}
this.larghezza = larghezza;
this.altezza = altezza;
}
// .......
}
Poi, dove vuoi inserire 1 rettangolo, ad esempio:
codice:
Rettangolo rett = null;
do {
System.out.print("Inserisci larghezza: ");
double larghezza = //...............
System.out.print("Inserisci altezza: ");
double altezza = //...............
try {
rett = new Rettangolo(larghezza, altezza);
} catch (IllegalArgumentException e) {
System.out.println("Rettangolo non valido, ripeti l'inserimento!");
}
} while (rett == null);
// ...usa rett
Questo è un modo sensato (non ho fatto vedere l'input di larghezza/altezza ... non è importante).
P.S. evita valori di ritorno di "stato" come 1, -1 ecc... NON stai programmando in "C".