Throws

1 resposta
E

Quando eu uso throws abaixo do método exemplo:

public static void imprime()
throws Exception

É pra chamar uma catch que está em outro método ? exemplo essa classe de teste que eu criei:

package com.testes;

import javax.swing.JOptionPane;
 

public class Testes
{
	
	
	  public static void main(String args[])
	  {
		  int x,y;
		  try
		  {
			  x=Integer.parseInt(JOptionPane.showInputDialog("Dígite o numerador "));
			  y=Integer.parseInt(JOptionPane.showInputDialog("Dígite o denominador "));
			  calcula(x, y);
		  }
		  catch(Exception e)
		  {
			  System.err.println("Tratando exceção do main");
		  }
		 
	  }
	  
	  public static void calcula(int x,int y)
	  throws Exception
	  {
		  try
		  {
			  
			   System.out.println("Dívisão "+x/y);
			   
			   throw new Exception();
		  }
		  
		  catch(ArithmeticException e)
		  {
			  System.out.println("Dívisão por zero");
		  }
		  catch(NumberFormatException e)
		  {
			  System.out.println("Vc digitou uma string ");
		  }
		  finally
		  {
			  System.out.println("Percorre todo o método e termina aki ");
		  }
		  
	  }
	
	
}

na parte throw new Exception(); ele lança uma nova exceção que está no corpo do main mais para que isto ocorrece tive que colocar no método calcula a expressão throws Exception com o nome da exceção que estou lançando, mas throws tb trata exceções do método mas não vejo sentido se vc chama o método dentro de um try catch é isto mesmo…?

1 Resposta

L

colocando throws Exception vc diz que dentro do seu método (calcula) pode ocorrer uma exceção chamada Exception e que vc não trata ela, ou seja quem chamar seu método calcula vai ter que tratar. E para tratar uma exceção vc precisa de um bloco try-catch.

Ou seja, throws não trata uma exceção, ele simplesmente joga pro chamador do método tratar, meio como: “ow, pode dar tal erro, mas não vou fazer nada, vc que me chamou que se vire para corrigir”.

imagina eu chamando seu método “calcula”, como vou saber que tenho que tratar o Exception se seu método não me disser?! para isso que serve o throws Exception, ai seu metodo diz: “posso lançar essa exceção”

Criado 10 de abril de 2007
Ultima resposta 10 de abr. de 2007
Respostas 1
Participantes 2