Exception que não capta erro?[Resolvido]

Olá pessoal, estou na seguinte dúvida.
Tenho um código e lancei uma exceção nele, mas ele tratou a exceção como se nada de errado tivesse acontecido(e nada de errado acontece mesmo).
Vejam o código abaixo, que foi adaptado:

public class OverAndOver { static String s=" "; public static void main(String[]args){ try{ s +="1"; throw new Exception(); }catch(Exception e){s +="2"; }finally{s += "3"; doStuff(); s +="4"; } System.out.println(s); } static void doStuff(){int x = 0; int y =7-x;} }
Fiz uma adaptação do método estático doStuff. No lugar de y=7-x, que resultaria em 7, na verdade o código anterior seria 7/x, o que resultaria em uma excessão ArithmeticException.
Pois bem, se eu lancei uma excessão dentro de

try{ s +="1"; throw new Exception(); }
como ele compila e resulta?:1234
Quer dizer se não achar o erro, só pelo fato de no try eu lançar o throw new Exception ele chama o catch?

exatamente
você manda lançar a exceção invariavelmente e é isso que o programa faz

o certo seria

try {
    r=7/x;
} catch(Exception ex) {
    //trata o problema
}

neste caso a exceção é lançada automaticamente se você tentar dividir por zero

caso você queira lançar uma exceção não automática você tem que fazer isso condicionalmente

if(coisa_indevida_acontecer) throw new OutraException();

tem funções que lançam exceções então também pode acontecer de você não ver a exceção sendo lançada explicitamente

try{
    funcao(3);
} catch(Exception ex) {
    //trata o problema
}
//vou colocar aqui mesmo a descrição da função funcao()
void funcao(int a) throws Exception {
    if(a==5) throw new Exception();
}

daí a função lança a exceção de dentro e ela é pega no catch


try
{
// Tente fazer isso, se não conseguir... capture o erro com o catch, lance uma exceção ou então exiba uma mensagem.
}catch(Exception e){

System.out.println(" Erro! Sistema indisponível no momento. ");

}

e a parte do finally vc coloca se quiser... isso ele executa de qualquer jeito... ocorrendo erro ou não...