/*Boa noite pessoal... A minha dúvida assola as minhas noites de sono (rs). Nao consigo assimilar as exceções em java. Estou com
* duvida onde eu coloco os tratamentos, se é npo método ou no main e assim vai, nao se preocupem em me falar as regras de java pois
* estou seguindo o livro scjp 6. SO não sei onde colocar os tratamentos, como faço pra lançar uma exceção na tela pra eu ver... Segue
* o exercicio do livro e tentei resolver mais acho que não esta correto.
*
* Propagando e capiturando exceções
*
* Neste exercicio tentaremos criar dois métodos que lidarão com exceções. Um deles é o método main(), que chamará outro método. Se uma
* exceção for lançada no outro método, ele terá que manipula-la. Uma instrução FINALLY será incluida para indicar que tudo foi concluído.
* O método chamado será denominado reverse(), e inverterá a ordem dos caracteres da string. Se a string não tiver caractéres, ele propagará
* uma exceção até o método main().
* 1 - Crie uma classe chamada Propagate e um método main(), que permanecerá vazio por enquanto
* 2 - Crie um método chamado reverse(). Ele usará como argumento e retornará uma String
* 3 - Em reverse(), verifique se a string tem um comprimento igual a 0 usando o método String.lenth(). Se o comprimento for igual a 0 (zero)
* ele lançará uma exceção.
* 4 - Agora no método main tentaremos chamar esse método e manipular qualquer exceção em potencial. Além disso, incluíremos uma instrução FINALLY
* que nos informará que a exceção foi concluída.*/
import java.util.*;
public class Propagate {
private String name;
String reverse(String s) {
String str = "";
try {
for(int t = s.length() - 1; t > 0; t--) { // t recebe o tamanho de s(argumento). Se o tamanho for maior ou iqual a 0
str += s.charAt(t); // str recebe a ultima letra da string s e assim por diante ate a primiera letra
} // += faz o autoboxing apontando para a nova referencia assim a variável str recebe os char(t)
} catch (Exception e) {
e.printStackTrace(); // Retorna o mapa de propagação da pilha
}
return str;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Propagate p = new Propagate();
System.out.print("Insira seu nome: ");
p.setName(s.nextLine());
p.reverse(p.getName());
}
}