Não consegui compreender corretamente o uso destes comandos…
"throw" é usado para lançar uma exceção. Por exemplo:
public void metodo()
{
if(alguma_coisa)
{
throw new Exception();
}
}
Logicamente, por Exception ser verificada, tem que haver um bloco catch para tratá-la.
"throws" é usado para indicar que um método lança uma exceção, mas o seu tratamento será feito pelo seu chamador.
Ex:
public void metodo() throws Exception
{
if(alguma_coisa)
{
throw new Exception();
}
}
public static void main(String[] args)
{
try{
objeto.metodo();
}
catch(Exception e){}
}
Assertions são usados para verificar estados. Por exemplo, podemos utilizar a palavra chave assert para verificar se determinada expressão é true ou false. Se for false, assert lança a exceção AssertionError, que é derivada de Error.
Por ex:
public class ClasseAssert {
public static void valoresInseridos() throws AssertionError
{
Scanner in = new Scanner(System.in);
System.out.printf("%s ", "Entre com um número positivo:");
int numero = in.nextInt();
assert (numero > 0) : "Número deve ser positivo";
System.out.println("Número entrado: "+numero);
}
public static void main(String[] args){
try
{
ClasseAssert.valoresInseridos();
}
catch(AssertionError e)
{
System.err.printf("%s", "Número fora do intervalo.\n");
e.printStackTrace();
}
System.out.println("Programa chega ao fim normalmente.");
}
}
vc precisa entender tratamento de exceções
http://camilolopes.wordpress.com/2009/02/04/tratamento-de-excecoes-em-java/
para compreender throw, throws