Tratamento de Exceções

tenho um exercício da faculdade para fazer que envolve tratamento de exceções.
já havia feito isso em C++ mas em java estou perdido devido as classes de tratamento de exceções que já tem no mesmo (IOException, Exception, ArrayIndexOutOfBoundsException, …)
O exercício pede a seguinte coisa: “criar uma classe de exceções para tratamento de quantidade de ações e valores negativos”; “No desenvolvimento de suas classes de exceção houve a herança de alguma classe de erro do Java? Por que foram escolhidas tais classes?”
Por que eu deveria herdar uma classe de erro do Java? Qual seria a melhor forma para fazer isso?

Já fez alguma coisa?, se fez posta ai

Ainda não fiz, apenas pesquisei e pensei em fazer ± da seguinte forma…

public class Negativo
{
	public showMessage()
	{
		System.out.println("Numero negativo.");
	}
}

No main algo do tipo.

try
{
	if(num < 0)
	{
		throw new Negativo();
	}
}
catch(Negativo e)
{
	e.showMessage();
}

[quote=xyruleib]Ainda não fiz, apenas pesquisei e pensei em fazer ± da seguinte forma…

public class Negativo
{
	public showMessage()
	{
		System.out.println("Numero negativo.");
	}
}

No main algo do tipo.

try { if(num < 0) { throw new Negativo(); } } catch(Negativo e) { e.showMessage(); } [/quote]
Ve se ajuda:
Aqui criei uma classe de tratamento de exceção

public class NegativoException extends RuntimeException {
	public NegativoException() {
		super("numero negativo");
	}
	
}

Entendi, dai teria que fazer um if para se o numero for negativo lançar uma exceção chamando a classe NegativoException?
E por que teria que herdar a classe RuntimeException?

Você pode herdar diretamente de Exception e criar uma exceção checada. Aí o código cliente é obrigado a tratar esta exceção. Estendendo de RuntimeException você obtém uma exceção não checada e só trata a exceção se achar conveniente.

Então sempre que eu herdar de Exception é checked?
Nesse caso como poderia tratar a exceção de número negativo?

[quote=xyruleib]Então sempre que eu herdar de Exception é checked?
Nesse caso como poderia tratar a exceção de número negativo?[/quote]

Sim.

Normalmente exceções relativas ao negócio são checadas, exceções da parte de infra do sistema não. Mas há divergências, tem gente que prefere sempre usar exceções não checadas.

Certo… Valeu pela explicação ai wagnerfrancisco.
Vou pesquisar mais um pouco sobre tratamento de exceções pra ver a melhor forma de estar tratando esse caso.

Ainda estou com uma dúvida…
Se eu fizer uma checked exception, quando o usuário digitasse um numero negativo teria que lançar uma exceção e pedir para que digitasse outro numero?
mais ou menos dessa forma:

do{ //faça
numero = pedeNumero(); //pede numero
if(numero < 0) //se for negativo
{
  throw excecao; //lança exceção
}
} while(numero < 0); //enquanto for negativo

http://camilolopes.wordpress.com/2009/02/04/tratamento-de-excecoes-em-java/

ver se ajuda.

LPJava eu já tinha visto esse link, de qlqr forma mto obrigado.
Só esto com dúvida de como seria uma checked exception. Se da forma que rascunhei no outro post está certo.

[quote=xyruleib]Ainda estou com uma dúvida…
Se eu fizer uma checked exception, quando o usuário digitasse um numero negativo teria que lançar uma exceção e pedir para que digitasse outro numero?
mais ou menos dessa forma:

do{ //faça numero = pedeNumero(); //pede numero if(numero < 0) //se for negativo { throw excecao; //lança exceção } } while(numero < 0); //enquanto for negativo [/quote]

Este exemplo certamente não apresenta bem o conceito de exceções. Se o número for menor que zero, você dispara a exceção e ele vai parar de executar o método em questão. Ou seja, não há por que ter este while. O teu código, aparentemente, funcionaria melhor sem este controle de exceções.

Você precisa fazer este controle para algum exercício em específico? Ou você está inventando um exemplo?

Preciso pra um exercicio específico.
Onde uma das questões pede: “criar uma classe de exceções para tratamento de quantidade de ações e valores negativos”.
Então pensei, se o valor for negativo ele lança uma exceção.

Apenas por esta especificação não dá pra deduzir muito. Mas talvez o que se queira é não criar uma ação com valor negativo:

public class Acao {
   public Acao (Double valor) throws NegativoException {
      if (valor < 0) {
         throw new NegativoException("Ação não pode ter valor negativo");
      }
   }
}

É apenas uma possibilidade. Ao tentar criar uma ação, você não consegue instanciá-la com um valor negativo. Recebe uma NegativoException.

Certo… Entendi.
Vou fazer aqui e depois posto o código!