Salve a tutti,
sto cercando di completare un esercizio proposto sul mio libro di programmazione:
devo scrivere un programmino che richiede di inserire una stringa di testo, se è composta da massimo 20 caratteri è tutto ok, conta i caratteri e tanti saluti... ma se invece ci sono meno di 20 caratteri lancia un'eccezione (creata da me) e insiste nel richiedere una stringa più corta.
Vi metto quello che ho scritto (che è funzionante) ma non è quello che volevo.
codice:
public class MexLungo {
   public static void main( String[] args ) {
      System.out.println( "Scrivi un testo di massimo 20 caratteri." );
      String s = SavitchIn.readLine();
      try {
         if( s.length() > 20 )
            throw new MessaggioTroppoLungoException();
         } catch( MessaggioTroppoLungoException e ) {
            s = ritenta();
         }
         System.out.println( "Hai inserito " + s.length() + " caratteri." );
      }

   public static String ritenta()  {
      System.out.print( "Ritenta con un messaggio più corto.\n> " );
      String s = SavitchIn.readLine();
      if( s.length() > 20 )
         return ritenta();
      else
         return s;
   }
}

class MessaggioTroppoLungoException extends Exception {
   public MessaggioTroppoLungoException() {
       super( "Messaggio troppo lungo" );
      }
      public MessaggioTroppoLungoException( String s ) {
         super( s );
      }
}
quello che davvero volevo era beccare l'eccezione anche nel metodo 'ritenta()', ma non so come fare... qualche dritta?
Nel senso che non posso usare l'intestazione tipo:
public static String ritenta() throws eccezione
perchè la dovrei beccare dal main ancora con try-catch e mi ritroverei esattamente nella situazione di prima, no?