Exceptions - dúvida

Boa tarde galera. belezura ??

Então, tenho que fazer uma calculadora em java, beleza…mas gostaria de fazer algo um pouco mais complexo e bonitinho.


package br.com.calculator;
import javax.swing.JOptionPane;
/**
 * 
 * @author Fabrício Masiero
 * @since 24 de Agosto de 2011.
 * @version 1.0
 * 
 */

public class Calculator {
	static int num1;
	static int num2;
	static String op;
	static double result;
	

	/**
	 * 
	 * @param args
	 * 
	 */
	public static void main(String[] args)  {
		
			
			
			num1 = Integer.parseInt(JOptionPane.showInputDialog("Primeiro número: "));
			
			num2 = Integer.parseInt(JOptionPane.showInputDialog("Segundo número: "));
			
			op = JOptionPane.showInputDialog("Operador: ");
			
			
			
			result = 0;
			
			if(op.equals("+"))
			{
				result = num1 + num2;
			}
			else
				if(op.equals("-"))
				{
					result = num1 - num2;
				}
				else
					if(op.equals("*"))
					{
						result = num1 * num2;
					}
			Calculator throws InvalidNumberException;
			if(op.equals("/"))
						{
							result = num1 / num2;				
						}
						else
							
								if(op.equals("%"))
									{
										result = num1 % num2;
									}
									else
										result = Math.pow(num1, num2);
										{
											System.out.println(result);
										}
										System.out.print(result);
	}
}

Mas ta dando erro na exceção, ela apresentaria o erro por exemplo na hora da divisão (/) caso eu dividisse 2 por 0, ou 0 por 2…isso não daria certo.

ai criei a classe da exception…

/**
 * 
 */
package br.com.calculator;

/**
 * @author opvs
 *
 */
class InvalidNumberException extends br.com.calculator.Calculator {

	public InvalidNumberException(double result) {
		super(result);
		
		while(num1 == 0);
		return;
		
		}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		

	}

}

Por que ta dando erro na linha 52 ??

Calculator throws InvalidNumberException;

valeu ai, espero ajuda hahaha
abraços

Dica: quando obtiver um erro de compilação ou de execução, poste aqui qual é a mensagem de erro. Fica mais fácil de te ajudar.

Dá erro nessa linha porque simplesmente ela não deveria estar ali. O que você esperava obter colocando essa linha no meio do código? Sabe mesmo como funciona o throws? E try…catch()?

Abraço.

Cara, o que você está tentando fazer com essa declaração da linha 52?
Instanciar novo objeto?

Para lançar uma ‘exception’ utiliza assim:

throw new SuaException();

para criar uma exception personalizada você deve herdar a classe Exception seja direto ou indiretamente leia esse outro post aqui

http://www.guj.com.br/java/72649-exceptions—criando-novas-exceptions

é, eu atualizei e esqueci de atualizar aqui.


if(op.equals("*"))
					{
						result = num1 * num2;
					}
			Calculator throws InvalidNumberException;
			if(op.equals("/"))
						{
							result = num1 / num2;				
						}
						else
							throw new InvalidNumberException ("Erro ao colocar o número na divisão");
																									
							
								if(op.equals("%"))
									{
										result = num1 % num2;
									}

agora sao dois erros, um naquela mesma linha(atual linha 6) a o outro é na linha do throw new (atual linha 12)…

Os erros respectivamente são:
1 - Syntax error on token “throws”, delete this token

2-No exception of type InvalidNumberException can be thrown; an exception type must be a subclass of Throwable

valeu ai galera!

Para criar um exceção personalizada leia o link que citei ou procure exemplos na internet quanto a linha 5 que está

Calculator throws InvalidNumberException;

esse código não é valido o que você está tentando chamar aqui?? se for criar um objeto retire o ‘throws’ do código acima

Oi,

Modifique para:

if(op.equals("*")) { result = num1 * num2; } if(op.equals("/")) { result = num1 / num2; } else { throw new InvalidNumberException ("Erro ao colocar o número na divisão"); }

Tchauzin!

Oi,

Só um grande detalhe. Quando você levanta uma exceção dessa forma:

throw new InvalidNameException();

Você deve estar pronto para Unhandled exception type InvalidNameException.

Para isso, pode-se corrigir de duas maneiras:

Adicionando e declarando um throws
ou
Tratando com try/catch

Tchauzin!