View Full Version : [JAVA]Lanciare eccezione su fallimento metodo
ciao a tutti,
avrei la necessità di lanciare un'eccezione quando un metodo dovesse fallire.
public void registra(String m){
int le=Integer.parseInt(m);
}
Praticamente dal codice sopra vorrei aggiungere la possibilità di lanciare un'eccezione se la stringa 'm' non dovesse essere un intero, facendo quindi fallire il parseInt.
Grazie
ma giá la lanci: in quel codice non hai catturato l'eccezione unchecked NumberFormatException, che quindi se salta si propaga.
ma giá la lanci: in quel codice non hai catturato l'eccezione unchecked NumberFormatException, che quindi se salta si propaga.
e come faccio a catturarla?
Cioè, la stringa in ingresso sarebbe un input da tastiera e io dovrei verificare se la stringa passata è un intero. Altrimenti lancio un eccezione.
Finora per gli altri controlli sull'input ho importato un'eccezione "Eccezione" fatta da me.
In questo modo:
public static void inserisci(String x)throws Eccezione{
if(x.length()!=2)
throw new Eccezione("stringa immessa diversa da 2 caratteri");
}
Vorrei lanciare un'eccezione simile anche qualora la stringa passata non dovesse essere un intero
Grazie
Thunderfox
21-06-2009, 11:03
Potresti usare un Try-Catch
public void registra(String m){
try {
int le=Integer.parseInt(m);
} catch (Exception e) {
e.printStackTrace();
}
}
Ovviamente "Exception e" viene usato per eccezioni generiche, ci dovrebbe essere anche un Eccezione apposita... ma non ne sono sicuro...
come già detto c'è la NumberFormatException
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Integer.html#parseInt(java.lang.String)
khelidan1980
21-06-2009, 13:31
Hai provato a complirae quel codice e/o usare un ide tipo eclipse?
Al massimo se hai bisogno di una eccezione personalizzata puoi fare il catch come ti hanno gia giustamente detto della number format exception e nel blocco catch fare il throw della tua eccezione
Credo di aver risolto così:
public void registra(String m)throws Eccezione{
int le;
try {
le = Integer.parseInt(m);
}
catch (NumberFormatException e) {
throw new Eccezione("Il parametro non è un intero");
}
Che ne dite?
khelidan1980
21-06-2009, 14:04
magari il nome dell'eccezione dovrebbe essere un po più parlante
Un'altra cosa..
public void registra(String m)throws Eccezione{
int le;
try {
le = Integer.parseInt(m);
}
catch (NumberFormatException e) {
throw new Eccezione("Il parametro non è un intero");
}
//altro
}
Se l'eccezione viene lanciata il resto del codice (//altro) non viene eseguito?
Questa è l'eccezione:
public class Eccezione extends Exception{
String msg;
public Eccezione(String messaggio){
super(messaggio);
msg=messaggio;
}
public String getMsg(){
return msg;
}
}
edit: considerando che non vi sono blocchi 'finally'
Grazie ancora
Che ne dite? che manca una parentesi graffa alla fine e che la variabile le non serve; scrivi cosi:
public void registra(String m)throws Eccezione{
try {
Integer.parseInt(m);
}
catch (NumberFormatException e) {
throw new Eccezione("Il parametro non è un intero");
}
}
malocchio
23-06-2009, 08:34
Un'altra cosa..
public void registra(String m)throws Eccezione{
int le;
try {
le = Integer.parseInt(m);
}
catch (NumberFormatException e) {
throw new Eccezione("Il parametro non è un intero");
}
//altro
}
Se l'eccezione viene lanciata il resto del codice (//altro) non viene eseguito?
edit: considerando che non vi sono blocchi 'finally'
Grazie ancora
No, non viene eseguito. Del resto, come immagino sai, un blocco finally verrebbe eseguito sempre, ammenoché nel blocco catch non sia presente un System.exit();
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.