Sem retorno de erro

2 respostas
J

No código abaixo, porque não está imprimindo a mensagem de "ERRO - A palavra é nula" ? O que tem de errado?

public class Exercicio1 {
    
    public static String upperChar(String s, int n) {
        return s.substring(n,n+1).toUpperCase();
    }
      public static void main(String[] args) {
         
        try {
         String c1 = upperChar("teste", 3);
            System.out.println("A letra é : "+c1);
      
         String c2 = upperChar("outro", 10);
        } catch(StringIndexOutOfBoundsException e1) {
            System.out.println("ERRO - Não foi possível obter a letra desejada");

         String c3 = upperChar(null, 2);
        } catch(NullPointerException e2) {
            System.out.println("ERRO - A palavra é nula");
            
            
        } 
    }
}

2 Respostas

G

@junny
atenção no try
veja:

try {  
         String c1 = upperChar("teste", 3);  
            System.out.println("A letra é : "+c1);  
        
         String c2 = upperChar("outro", 10);  
        } catch(StringIndexOutOfBoundsException e1) {  
            System.out.println("ERRO - Não foi possível obter a letra desejada");  
  
         String c3 = upperChar(null, 2);  
        } catch(NullPointerException e2) {  
            System.out.println("ERRO - A palavra é nula");  
              
              
        }

você não esta tratando a Exception gerada pela String c3.

catch(NullPointerException e2)

não ocorrerá está ação
veja o try com multiplos catch's da seguinte forma
se ocorrer uma StringIndexOutOfBoundsException e1 o segundo catch não ocorrerá.
o código corrigido fica assim:

public static void main(String[] args) {  
		try {  
			String c1 = upperChar("teste", 3);  
			System.out.println("A letra é : "+c1);  
			String c2 = upperChar("outro", 10);  
		} catch(StringIndexOutOfBoundsException e1) {  
			System.out.println("ERRO - Não foi possível obter a letra desejada");  
			try{
				String c3 = upperChar(null, 2);  
			} catch(NullPointerException e2) {  
				System.out.println("ERRO - A palavra é nula");  
			}

		}   
	}
J

Muito obrigado pela ajuda, salvou meu dia!
Tenho muita dificuldade em programação e não entendi muito bem este conteúdo sobre Exceptions.
Você poderia dar uma olhada e ver se está de acordo o meu código com o que pede o exercício?
Valeu, obrigado pela ajuda!

Exercício O método abaixo foi construido para retornar o caracter na posição N de uma String convertido para letras maiúsculas.
public static String upperChar(String s, int n) {
return s.substring(n,n+1).toUpperCase();
Para testar o método, devem ser utilizadas as chamadas abaixo:
a) String c = upperChar(?teste?, 3);
b) String c = upperChar(?outro?, 10);
c) String c = upperChar(?Mais um?, -5);
d) String c = upperChar(null, 2);
Algumas dessas chamadas PODEM provocar erros. Modifique o método de forma que as chamadas acima funcionem corretamente, implementando tratamentos de erro que exibem mensagem claras sobre o que está sendo feito de errado.

Segue abaixo meu código:

public class Exercicio1 {
    
    public static String upperChar(String s, int n) {
        return s.substring(n,n+1).toUpperCase();
    }
      public static void main(String[] args) {
         
        try {
         String c1 = upperChar("teste", 3);
            System.out.println("A letra é : "+c1);
      
         String c2 = upperChar("outro", 10);
        } catch(StringIndexOutOfBoundsException e1) {
            System.out.println("ERRO - Não foi possível obter a letra desejada");
            
       try {
            String c3 = upperChar("Mais um", -5);
        } catch(StringIndexOutOfBoundsException e2) {
            System.out.println("ERRO - Não foi possível obter a letra desejada");
        }
       try {
           String c4 = upperChar(null, 2);    
        } catch(NullPointerException npe) {    
            System.out.println("ERRO - A palavra é nula");    
            }  
            
            
        } 
    }
}
Criado 12 de novembro de 2013
Ultima resposta 12 de nov. de 2013
Respostas 2
Participantes 2