Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 2, 9 CFU => Topic started by: Jack&Daxter on 29-03-2011, 16:01:39



Title: try-catch
Post by: Jack&Daxter on 29-03-2011, 16:01:39
Mi dite per piacere dov'è che sbaglio nel seguente codice? Quello che vorrei fare io è creare un eccezzione per i numero maggiori di 100 e proseguire il programma stampando "Ho oltrepassato l'eccezzione". Mi aiutate a capire che cosa sbaglio? GRAZIE  .wink
Code:

public class Eccezzioni
{
public class TooBigException extends Exception
{
TooBigException() {
super();
}
}

public int max(int a, int b) {
int max = a > b ? a : b;
if (max > 100) {
throw new TooBigException();
}
return max;
}

}

public class main
{
public static void main (String [] args) throw TooBigException()
{
System.out.println(max(200,4));

System.out.println("Ho oltrepassato l'eccezzione");
}
}



Title: Re:try-catch
Post by: KingDavid on 29-03-2011, 16:30:43
Non ho controllato se il codice è sintatticamente e semanticamente corretto, tuttavia devi inserire l'isruzione che lancia l'eccezione dentro un try-catch altrimenti non puoi catturarla. Per come l'hai impostato tu l'eccezione viene mandata a quel paese dal main. Devi fare qualcosa di questo tipo:
Code:
public class main
{
public static void main (String [] args)
                {
                         try
                          {
System.out.println(max(200,4));
        }
                          catch(TooBigException tbe)
                          {
System.out.println("Ho oltrepassato l'eccezzione");
                          }
}
}




Title: Re:try-catch
Post by: Jack&Daxter on 29-03-2011, 16:49:56
Grazie..quindi try-catch serve per catturare l'eccezzione e proseguire ...allora perchè si mette:

Code:
public static void main (String [] args) throw TooBigException()

a cosa serve  throw TooBigException() se già il try catch cattura l'eccezzione? grazie  .wink


Title: Re:try-catch
Post by: KingDavid on 29-03-2011, 16:52:27
Scusa, ho sbagliato.
Per come ho scritto io, in realtà la stampa avviene quando l'eccezione viene catturata.
Magari dentro il catch potresti stampare qualcosa del tipo "Ho catturato l'eccezione".

Dopo aver catturato l'eccezione hai due scelte: o aggiungi il finally tipo
Code:
try
{
}
catch
{
}
finally
{
  System.out.println("Ho oltrepassato l'eccezione");
}

oppure lo inserisci, semplicemente dopo il catch:
Code:
try
{
}
catch
{
}

  System.out.println("Ho oltrepassato l'eccezione");



Title: Re:try-catch
Post by: KingDavid on 29-03-2011, 16:54:54
Grazie..quindi try-catch serve per catturare l'eccezzione e proseguire ...allora perchè si mette:

Code:
public static void main (String [] args) throw TooBigException()

a cosa serve  throw TooBigException() se già il try catch cattura l'eccezzione? grazie  .wink
In realtà nel main, in pratica, serve a poco, cioè quando non vuoi gestire l'eccezione.
Però nessuno ti vieta di scrivere:
Code:

public static void main (String [] args) throws TooBigException


                {
                         try
                          {
System.out.println(max(200,4));
        }
                          catch(TooBigException tbe)
                          {
throw new TooBigException();
                          }
}



Title: Re:try-catch
Post by: KingDavid on 29-03-2011, 17:08:05
Quello che ho scritto nell'ultimo post sembra avere poco senso visto che siamo nel main però se immagini una situazione in cui l'eccezione si è verificata in un metodo chiamato a sua volta all'interno di un altro metodo, allora questo ha più senso o meglio potrebbe servire a qualcosa.

Ti consiglio di leggere attentamente la seguente pagina (http://download.oracle.com/javase/tutorial/essential/exceptions/definition.html).

 :-ciao


Title: Re:try-catch
Post by: fabryxio on 29-03-2011, 17:49:09
   System.out.println("Ho oltrepassato l'eccezzione");

secondo me il software rifiuta la compilazione .. dato che c'è una grave z in + xD


Title: Re:try-catch
Post by: Chuck_son on 29-03-2011, 19:33:45
dato che c'è una grave z in + xD

ahahah dai


Title: Re:try-catch
Post by: Jack&Daxter on 30-03-2011, 01:06:23
Grazie mille per il materiale KingDavid mi hai dato un grosso aiuto !!!  :yoh .wink