Preciso de ajuda, aprendendo a usar try -catch

galera to fazendo um programa q le um numero que deve estar entre 1 e 12 e mostra o mês correspondente na tela. Caso ele não seja um valor entre 1 e 12 mostrar uma msg de aviso na tela. Eu to usando o try e catch

import java.io.*; 

public class Exercicio8
{
	public static void main(String args[])
    {
    	BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));     	
    	
    	try{
    	
	     	System.out.print("Digite um numero entre 1 e 12:");   
	      
	        String teclado = reader.readLine();
	        
	        int intValor =  Integer.parseInt(teclado);
	        
	        
	        switch (intValor) {
	        	case 1:
	        		System.out.println("Janeiro");
	        		break;
	        	
	        	case 2:
	        		System.out.println("Fevereiro");
	        		break;

                               .
                               .
                               .
                     
              }catch(IOException e){   
         	System.out.print("Erro: " + e);   
      		
      	}catch(Exception erro){
      		
      		if (intValor < 1)
      		{
      		
      			System.out.print("Esse numero está incorreto, digite um valor entre 1 e 12" + erro); 
      		}
      	}   
 
    }
} 

Um exemplo simples ja serve eu dei uma olhada na sintaxe mas não entendi mto bem como faço para chamar tal aviso de erro quando ele acontecer.

try{ switch(intValor){ case 1: //codigo case 2: //codigo default: throw new Exception("Valor incorreto: "+intValor); } }catch(Exception e){ System.out.println(e.getMessage()); }

valew funciono =]

ao invés de usar o throw não daria para colocar mais um catch?

Como assim?

throw serve pra lançar uma exceção e catch pra capturar, ou seja, tem objetivos diferentes.

[quote=“WDK_Gatts”]valew funciono =]

ao invés de usar o throw não daria para colocar mais um catch?[/quote]

não é uma boa ideia usar try-catch para controle de fluxo. Use apenas isto



   switch(intValor){
      case 1:
             //codigo
             break;
      case 2:
            //codigo
            break;
      default:
           System.out.println("Valor incorreto: "+intValor);
   }

porque vc nem sequer está deixando a exceção sair do método. É portanto inutil lança-la em primeiro lugar.

E mais, para ser melhor ainda vc deveria fazer:


   if (intValor<1 || intValor > 12){
        System.out.println("Valor incorreto: "+intValor);
   }

   String[] meses = new String[]{"Janeiro","Fevereiro" ..... "Dezembro"};

   return meses[intValor-1];