Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    115

    errore nel compilare una chat

    salve ragazzi sto creando una chat in java...solo che nel compilare mi da questo errore:
    "unreported exception java.net.UnknownHostException; must be caught or declared to be thrown" cosa potrebbe essere??? potreste darmi qualche indizio...se necessario incollo il codice.
    grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: errore nel compilare una chat

    Originariamente inviato da cobraa
    salve ragazzi sto creando una chat in java...solo che nel compilare mi da questo errore:
    "unreported exception java.net.UnknownHostException; must be caught or declared to be thrown" cosa potrebbe essere??? potreste darmi qualche indizio...se necessario incollo il codice.
    grazie a tutti
    Non serve postare il codice. Serve che tu capisca meglio come si gestiscono le eccezioni, quale è la differenza tra eccezioni checked e unchecked, ecc....

    UnknownHostException deriva da IOException, che deriva da Exception, quindi è una eccezione checked che devi gestire in modo appropriato e nel punto appropriato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    115
    si ma per sapere dove devo intervenire ti mostro il codice..magari mi dai un consiglio:
    in pratica sono 3 classi...una classe client una server ed un altra con l'interfaccia grafica solo che non mi regolo sedevo intervenire nel client oppure puo dipendere dal server; l'errore me lo da nel client...eccolo incollato:


    codice:
     import javax.swing.UIManager;
    import java.net.*;
    import java.io.*;
    //import java.lang.Integer;
    import java.util.*;
    
    public class ChatClient extends ChatClientGUI{
    	Socket socket;
    	private DataInputStream is;
    	private BufferedReader os;
    
        /** 
         * Metodo per connettersi al Chat Server
         * @param server
         * on a given port
         * @param port
         */
        public boolean connectServer( String server, String port )
        {
            displayMessage("SYSTEM MESSAGE", "connection to " + server+ " -- port= "+port);
    		socket=new Socket("localhost",8008 );
    		boolean ok=true;
    		// ..... da implementare
            return ok;
        }
    
        /* Interropme i thread per la ricezione dei messaggi dal server e chiude tutti gli stream associati */
        public boolean disconnectServer(){
            displayMessage("SYSTEM MESSAGE", "disconnection");
    		boolean ok=true;
    		// ..... da implementare
            return ok;
        }
    
        /* Tentaticvo di registrare il nickname "name", inviando un opportuno messaggio al server */
        public boolean setScreenName( String name ){
    		boolean ok=true;
    		// ..... da implementare
            return ok;
        }
    
    
        /* Invia un messaggio di chat al server ("message" contiene il testo scritto dall'utente)*/
        public boolean sendMessage( String message ){
    		boolean ok=false;
    		// ..... da implementare
    	  	return ok;
        }
    
        public static void main(String[] args){
    		try{
    			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    		}
    		catch(Exception e){
    		}
    
    		ChatClient client = new ChatClient();
    		client.show();
        }
    
    }

    grazie

  4. #4

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    115
    si le api c'e l'ho anche io...!!!

  6. #6
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    socket=new Socket("localhost",8008 );

    li devi o catturare con try catch l'eccezzione o dichiarare la possibilità che vengano lanciate eccezioni al codice chiamante con throws

    di solito usando qualche IDE sufficentemente rispettoso cliccando sul testo dell'errore porta sulla riga (o almeno nei dintorni) dell'errore.

    Quello che voleva mostrarti simo7784 era il costruttore che usi, che appunto dichiara con throws l'eccezione che non gestisci ne rimandi al codice chiamante.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Quello che voleva mostrarti simo7784 era il costruttore che usi, che appunto dichiara con throws l'eccezione che non gestisci ne rimandi al codice chiamante.
    Corretto il link. L'ultima parte del link (java.lang.String,%20int) era finita fuori dal tag [url] e non indirizzava al punto corretto della pagina delle API.

    si le api c'e l'ho anche io...!!!
    Ottimo, allora non ti resta che fare attenzione quando le leggi. Buon lavoro.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    115
    no mai io ringrazio simone e tutti voi perche siete veramente bravi...volevo solo commentato...ora ho capito...grazie a tutti ragazzi...provo e vedo come va. thx

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    115
    ragazzi scusate... ho gestito l'eccezione ho scritto cosi:

    public boolean connectServer( String server, String port ) throws IOException
    ....
    ....
    ....

    pero mi da un altro errore eccolo:
    connectServer(java.lang.String,java.lang.String) in ChatClient cannot override connectServer(java.lang.String,java.lang.String) in ChatClientGUI; overridden method does not throw java.io.IOException

    grazie a tutti ragazzi

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Facendo in quel modo, nel tuo caso ti si presentano due problemi. Il primo sta nel fatto che hai una gerarchia di classi e sottoclass. Se il metodo della superclasse non lancia l'eccezione, nemmeno quello della sottoclasse lo puo' fare. Il motivo e' semplice. Se si potesse fare avresti situazione come questa.
    codice:
    public class A {
       public void met(){
          ..codice
       }
    }
    
    import java.io.*;
    public class B extends A{
       public void met() throws IOException{
          ..codice
       }
    }
    
    public class Test {
       public static void main(String[] args) {
          A oggetto = new B(); 
          /*Legale perche' B estende A quindi ha tutti i metodi di A
           *Da questo momento oggetto e' di tipo A anche se il codice
           *dei metodi sovrascritti e' quello di B.
           */
          oggetto.met();
          /*Il compilatore non segnala errori perche' nella firma di A non c'e' la clausula throw
           *Puo capitare che a runtime, essendo il codice quello di B, venga sollevata l'eccezione.
           */
       }
    }
    Per impedire tutto cio' e' obbligatorio che l'eccezione venga dichiarata come lanciabile anche nel metodo della superclasse.
    Il secondo problema risiede nel fatto che in questo modo ti limiti ad inoltrare l'eccezione al metodo chiamante che dovra' poi gestirla in un try-catch o propagarla ancora.
    Morale della favola alla fine da qualche parte il try-catch devi metterlo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.