Pages: [1]   Go Down
Print
Author Topic: try-catch  (Read 1345 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Jack&Daxter
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 398



« 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 
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");
}
}

Logged
KingDavid
Forumista
***
Offline Offline

Posts: 788


Alla fine [...] tutta la realtà è binaria.


« Reply #1 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");
                          }
}
}


Logged

Basti pensare che un ipotetico quadrato di specchi, lungo 200 chilometri per ogni lato, potrebbe produrre tutta l'energia necessaria all'intero pianeta.
(Carlo Rubbia)
Jack&Daxter
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 398



« Reply #2 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  
Logged
KingDavid
Forumista
***
Offline Offline

Posts: 788


Alla fine [...] tutta la realtà è binaria.


« Reply #3 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");

« Last Edit: 29-03-2011, 16:59:17 by KingDavid » Logged

Basti pensare che un ipotetico quadrato di specchi, lungo 200 chilometri per ogni lato, potrebbe produrre tutta l'energia necessaria all'intero pianeta.
(Carlo Rubbia)
KingDavid
Forumista
***
Offline Offline

Posts: 788


Alla fine [...] tutta la realtà è binaria.


« Reply #4 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 
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();
                          }
}

« Last Edit: 29-03-2011, 16:57:41 by KingDavid » Logged

Basti pensare che un ipotetico quadrato di specchi, lungo 200 chilometri per ogni lato, potrebbe produrre tutta l'energia necessaria all'intero pianeta.
(Carlo Rubbia)
KingDavid
Forumista
***
Offline Offline

Posts: 788


Alla fine [...] tutta la realtà è binaria.


« Reply #5 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.

 ciao
Logged

Basti pensare che un ipotetico quadrato di specchi, lungo 200 chilometri per ogni lato, potrebbe produrre tutta l'energia necessaria all'intero pianeta.
(Carlo Rubbia)
fabryxio
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 343

Chi l'ha duro....... l'ha duro!


WWW
« Reply #6 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
Logged

Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #7 on: 29-03-2011, 19:33:45 »

dato che c'è una grave z in + xD

ahahah dai
Logged

Aliens Exist
Jack&Daxter
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 398



« Reply #8 on: 30-03-2011, 01:06:23 »

Grazie mille per il materiale KingDavid mi hai dato un grosso aiuto !!!  yoh
Logged
Pages: [1]   Go Up
Print
Jump to: