Ola pessoal. Talvez ague ai possa me ajudar. Queria gerar uma exception dentro do método sem ter que declarar o tipo na assinatura do método. Exemplo:
public class Conta{
public void contanumero(int numero){
if(numero <=0) throw new Exception("Numero deve ser maior que zero");
}
}
Se eu faço isso não compila pois o compilador ó :paulada:. Ele exige que tenha o throws Exception na assinatura do método. Mas eu vi que a classe String tem uma exception gerada dentro de um if que fica dentro de um método :serio: . O IndexOfBoundException. Queria fazer isso pois algumas exceptions não são tão constantes a ponto de exigir o try catch toda vez que se usa o método.
Tira o throw do código:
throw new Exception("Numero deve ser maior que zero")
…porque assim vc está subindo a exceção…e apenas deixe o new Exception… Assim não será mais necessário o throws Exception na assinatura do método… blz?
Mas aí a exceção não é gerada como esperado. Precisa do throw para ela ser lanaçada. Ja descobri como resolver. Basta criar uma classe que extenda a RuntimeException. Dai ela funciona igualzinho a Exception mas nao exige o try catch. Mesmo assim valew a ajuda.
Não é assim não… se vc usar como escrevi no post anterior, vc tb não vai precisar do try… pode testar se quiser… 
Fiz o teste amigo. A execeção realmente não foi gerada. Não aconteceu absolutamente nada. Para ele gerar a exceção como esperado é preciso usar o throw. Caso contrario ele cria objeto Exception na memoria mas não faz nada com ele. A minha idéia é gerar a exceção e jogar-la para cima mesmo. Com RuntimeException funcionou bem.
Alias bastou usar assim:
throw new RuntimeException("Teste");
Se funcionou está valendo… mas eu então não entendi o que vc quis fazer realmente… 
O que eu queria fazer é o seguinte. Tenho uma classe que manipula datas. Faz conversao e tudo o mais que não tem implementado nas classes padrões do java. So que como os métodos recebem parametros eu tenho que me certificar que eles não venham nullos ou coisa assim pois se não são geradas RuntimeExceptions das classes de manipulação de datas padrão do java. Como essa classe vai ser muito usada, não faz sentido eu ficar exigindo try cath toda vez que vai usar ela. Pois as exceções possiveis de acontecer são erro de lógica de programação e não de input incorreto de dados por parte do usuário. Entao para exceções que podem ocorrer por erro de progração se usa a RuntimeException. Descobri isso depois que postei no forum. Ja as Exception são exeções que podem ser “esperadas”. Por exemplo um dado incorreto inputado pelo usuário. Entendeu? Criar um objeto e não fazer nada com ele não faz muito sentido certo? Por isso que eu precisava do throw. Para realmente gerar a exceção e obrigar o programador (eu hehehe) a consertar o código.
Olá, estou cadastrado a pouco tempo, mas observei tua dúvida
Existe dois tipos de exceção no compilador java que não necessita de try-catch: RuntimeException e VirtualMachineError. Criando ou utilizando classes que extendam destas, não será necessário utilizar throws no cabeçalho blz
qual o problema de se usar throws no cabelho?
não tem problema, só acontece q tu vai ter q tratar depois, a regra é… ou tu trata, ou tu lança… mas em algum momento na pilha de chamadas tu vai ter q tratar…
Blz kara?
É que se vc colocar um throws na declaração do método, quando ela for chamada, será obrigatório vc coloca-lá em um try/catch.
blz? 
Problema nenhum. Mas para alguns métodos não há necessidade. Se é um sistema onde esse método vai ser usado com dados filtrados não faz sentido você ficar usando try cath ja que a unica forma de um erro acontecer é por logica defeituosa. Ou seja mais para o programador não errar do que para o usuário. Eu queria fazer isso porque vi muitos metodos no java que geram exceções mas não necessitam de try catch. Eles usam o RuntimeException.