Newsgroup: it.comp.java
Titolo: errore compiler su eccezioni

Ragazzi... ancora una volta alle prese con problemi semplici
ma che mi inchiodano..
in pratica ho una classe per gestire una eccezione, un'altra classe che fa
determinate operazioni e dovrebbe usare l'eccezione di cui sopra.. ma
quando compilo quest'ultima ho il solito cannot resolve symbol..
Sorgente WrongTypeException:
public class WrongTypeException extends Exception {
 public WrongTypeException(char t) {
   super("Error!\nTemperature type must be F/f for Fahrenheit\n");    
 }
}
Sorgente TemperatureConverter:
import java.util.Scanner;
public class TemperatureConverter {
 private String type;
 private float temp;
 public void TemperatureConverter() throws WrongTypeException {
   // attempt to read input from stdin
   Scanner input = new Scanner(System.in);
   System.out.print("\nEnter temperature type. Fahrenheit [F/f], 
                       Celsius [C/c]: ");
   this.type = input.next();
   if(this.type!="F" || this.type!="f" || this.type!="C" ||
this.type!="c"){
    throw new WrongTypeException();
   }
   System.out.print("\nEnter temperature: ");
   this.temp  = input.nextFloat();
 }
}
(scusate la pessima formattazione)
quando compilo la prima classe (WrongTypeException) non ho errori
quando invece compilo la seconda ottengo:
D:\MyPrj>javac TemperatureConverter.java
TemperatureConverter.java:14: cannot find symbol
symbol  : constructor WrongTypeException()
location: class WrongTypeException
          throw new WrongTypeException();
                ^
1 error
qual'e' il problema?
grazie
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 qual'e' il problema?
E' che nella classe WrongTypeException tu hai definito il costruttore
WrongTypeException(char t) e NON il costruttore WrongTypeException().
Quindi o lo definisci oppure passi un char (throw new
WrongTypeException(qualcosaDiTipochar)
bye
DKano

DKano ha scritto:


hai perfettamente ragione... un refuso.. una mia colossale svista..
capire il meccanismo delle eccezioni non e' semplice.. vediamo se ci sono
o dico cappellate... anche perche' ricevo ancora errori ma penso siano
legati
al fatto che non ho capito bene come funzia..
io creo una mia eccezione, la classe WrongTypeException.
nella mia classe uso la sintassi
public void TemperatureConverter() throws WrongTypeException
e poi il controllo:
if(....)
 throw new WrongTypeException();
e fin qui tutto bene...
poi nel mio main che fo?
una roba di questo tipo:
public static void main(String args[]) {
    TemperatureConverter t = new TemperatureConverter();
    try {
            System.out.println(t.convertTemperature());
    }
    catch (WrongTypeException er) {
      System.out.println("Type Exc");
    }
    catch (ArithmeticException exc) {
      System.out.println("Arith Exc");
    }
}
ma in fase di compiling ottengo:
D:\MyPrj>javac TemperatureConverterTest.java
TemperatureConverterTest.java:7: exception WrongTypeException is never
throw
 body of corresponding try statement
      catch (WrongTypeException er) {
      ^
1 error
quindi o sbaglio l'approccio o ci sono errori sintattici/strutturali..
altra domanda.. se il metodo TemperatureConverter potrebbe
potenzialmente generare altre eccezioni personalizzate come lo dichiaro???
questa sintassi:
public void TemperatureConverter() throws WrongTypeException
mi fa capire che ne gestisco solo una per quel metodo...
che casino!!


 altre eccezioni personalizzate come lo dichiaro???
Potesse -_-;
Nel caso lo dichiari cosi'
public tuotipo convertTemperature() throws WrongTypeException, 
AltraEccezione1, Eccezione2
Saluti
CarMas