ho scritto la seguente cosa in un metodo e non mi dà problemi:
Codice: Seleziona tutto
try{
file.read();
}
catch (IOException ex)
{
throw new MyException("....");
}
Codice: Seleziona tutto
try{
file.read();
}
catch (IOException ex)
{
throw new MyException("....");
}
Codice: Seleziona tutto
public class MyClass{
/*.....*/
public void myRead() throws IOException{
file.read();
}
}
public static void main (String args[]) {
MyClass ogg = new MyClass();
try{
ogg.myRead();
}catch(IOException e){
//gestisci l' eccezione
}
try{
//altro metodo che puo' sollevare una IOException
ogg.altroMetodo();
}catch(IOException e){
//gestisci l' eccezione
}
}

ConcordeArcovoltaico77 ha scritto: concordo anch'io con Pier. meglio che il metodo sollevi la "sua" IOException ; spetta a chi userà tale metodo, se vorrà, intercettarla e gestirla come meglio crede. Così non specializzi la funzione per uno specifico caso, ma puoi riutilizzarla , tra l' altro.
Per la leggibilità, è solo questione di un minimo di pratica, fidati (b2b)
In effetti questo metodo, a lungo andare, su una classe medio grande non è agevole alla lettura/revisione della classe stessa.smile8 ha scritto: In effetti è una soluzione che avevo adottato ma se faccio così mi ritrovo un file difficile (a mio avviso) da leggere ed è per questo che ho deciso di catturare l'eccezione nel metodo e lanciarne una (se così si può dire) più specializzata...
Codice: Seleziona tutto
import java.util.Scanner;
public class Prova{
public static void metodo1()throws MyException{
throw new MyException();
}
public static void metodo2()throws MyException{
throw new MyException();
}
public static void main(String [] args){
try{
System.out.println("Inserisci di seguito il nome del metodo che dovrà lanciare l'eccezione:");
Scanner tastiera=new Scanner(System.in);
String input=tastiera.next();
if(input.equals("metodo1"))
metodo1();
else if(input.equals("metodo2"))
metodo2();
else
throw new MyException();
}catch(MyException e){
StackTraceElement[] element=e.getStackTrace();
if(element[0].getMethodName().equals("metodo1"))
System.out.println("Eccezione sollevata dal metodo1");
else if(element[0].getMethodName().equals("metodo2"))
System.out.println("Eccezione sollevata dal metodo2");
else
System.out.println("Eccezione sollevata dal main");
}
}
}Codice: Seleziona tutto
public class MyException extends Exception{
public MyException(){
super("MyException");
}
public MyException(String string){
super(string);
}
}Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti