Trabalhando com timer

8 respostas
A
Tenho o seguinte código:
public static void main(String[] args)throws Exception {
   	 
   	 int tempo = (1000 * 60) * 5;   // 5 min.  
     int periodo = 100;  // quantidade de vezes a ser executado.  
     Timer timer = new Timer();  
      
     timer.scheduleAtFixedRate(  
             new TimerTask() {  
                 public void run(){  
                     //aqui vai o código que deve ser executado  
        LB2 lb = new LB2();
		lb.procedure();
        lb.FIM();
        lb.LB2();
        lb.separa();
         JOptionPane.showMessageDialog(null,"Novas Mensagens recebidas do INPE!!");
                 }  
             }, tempo, periodo); 
       	
        }

Esse é o meu main que utilizando a classe do timer executa os métodos acima. O problema é que meu lb.separa utiliza "throws Exception". A minha dúvida é onde eu coloco esse "throws Exception". Tentei colocar depois do run, mas ele não aceita.

8 Respostas

xandevieira

vc poderia colocar dentro de um

try{ ... }catch (Exception e) { e.printStackTrace(); }

A

Continua dando erro:

xandevieira

vc colocou o bloco na classe main?

ficaria assim:

try{
      timer.scheduleAtFixedRate(    
              new TimerTask() {    
                  public void run(){    
                      //aqui vai o código que deve ser executado    
         LB2 lb = new LB2();  
         lb.procedure();  
         lb.FIM();  
         lb.LB2();  
         lb.separa();  
          JOptionPane.showMessageDialog(null,"Novas Mensagens recebidas do INPE!!");  
}catch{
e.printStackTrace();
}
A

Mas está do jeito que vc colocou:

public static void main(String[] args)throws Exception {
   	 try{ 
   	 
   	 int tempo = (1000 * 60) * 5;   // 5 min.  
     int periodo = 100;  // quantidade de vezes a ser executado.  
     Timer timer = new Timer();  
      
     timer.scheduleAtFixedRate(  
             new TimerTask() { 
             	 
                 public void run(){  
                     //aqui vai o código que deve ser executado 
                     
        LB2 lb = new LB2();
		lb.procedure();
        lb.FIM();
        lb.LB2();
        lb.separa();
         JOptionPane.showMessageDialog(null,"Novas Mensagens recebidas do INPE!!");
                 }  
             }, tempo, periodo); 
       	
   	 }catch(Exception e){
   	 	e.printStackTrace();
   	 }
        }

E ainda aparece:

ERRO: unreported exception java.lang.Exception; must be caught or declared to be thrown
oliveirarenan

Poste o codigo inteiro, com os importes correspondentes…e a classe LB2

Abs´s

:lol: :lol: :lol:

A
Aí vai:
import java.io.*; 
import java.text.*;
import java.util.*;
import java.sql.Timestamp;
import java.sql.*;
import java.util.Date; 
import util.conn;
import javax.swing.JOptionPane;

public class LB2 {
     String line;
    int var[] = new int[20];
    String id1="";
    String str[] = new String[21];
    String bin[] = new String[20];
    Timestamp dataHora[];
    String idBanco[];
    String idFinal="";
    int tam[] = new int[20];
    int dif[] = new int[20];
    String A[] = new String[100];
    double lat;
    double longiabs;
    String concat;
    int cont;
    int cont5;
    int cont6;
    int contador;
    int inic, fin;
    String ano;
    String query;
    Date data1;
    int contL=0;
    String query1="";
    String query2="";
    int nLinha=0;
    public String data;
    public String data_hora;
    public String data2;
    public String hora;
    public double latitude;    
    public double longitude;    
    public int id;
    int contador2=0;
	int trava=0;   
	int igual;	
	int K;	 
    BufferedReader bf;
    /**
     * Creates a new instance of <code>LB2</code>.
     */
     
   public void procedure(){
     	conn conecta = new conn(); 
		Connection conexao = null; 
		conexao=conecta.getConnection();
		try{
		Statement stmt1=conexao.createStatement();
     	query1 = ("call atualiza_registros_sat()");
     	stmt1.executeQuery(query1);
     		}
		catch (SQLException ioe1) {
		ioe1.printStackTrace();
		}
     }
     
  	public void conecta(String data, double latitude , double longitude,String idFinal, String data_hora)throws Exception{
	conn conecta = new conn(); 
	Connection conexao = null; 
	conexao=conecta.getConnection();
	this.data =data;
	this.latitude =latitude;
	this.longitude =longitude;
	this.idFinal=idFinal;
	this.data_hora=data_hora;

	try { 
		
		while (contador2 < nLinha){
			
		contador2++;
		}
					
		Statement stmt= conexao.createStatement(); 
		query = "insert into pontos values ('"+data2+"','"+latitude+"','"+longitude+"','"+idFinal+"',cont.nextval,'"+hora+"','SATELITE',to_timestamp ('"+data_hora+"','DD/MM/YYYY HH24:MI:SS'))";
     	stmt.executeUpdate(query);
     	}
		catch (SQLException ioe) {
		ioe.printStackTrace();
		}
	}
	
	public void FIM() {
    int contaLinha1=0;
    try{    
    
     String dir = "C://Univap";
     BufferedWriter bw = new BufferedWriter(new FileWriter(dir+"//filtro.txt"));
    java.io.File diretorio = new java.io.File(dir);
    String[] arquivos = diretorio.list();
    for (int i= 0; i < arquivos.length; i++){
    	if(arquivos[i].endsWith("raw")){
     	bf = new BufferedReader(new FileReader(dir+"//"+arquivos[i]));
				
    while ((line = bf.readLine()) != null)
		{	
		    cont = 0;
			inic =35;
			fin = 38;
			contaLinha1++;
	         	if((line.length()>=118)){
					bw.write(line.substring(0,118)+"\r\n");
				}
        
		}
		
		} //fecha if
    } //fecha for
   	
		bw.close();
		
     }
     catch (IOException ioe) {
	ioe.printStackTrace();
	}

    }
 	
    public void LB2() {
    int contaLinha1=0;
    int k;
    try{    
     
     String dir = "C://Univap";
     BufferedWriter bw = new BufferedWriter(new FileWriter(dir+"//saida3.txt"));
    bf = new BufferedReader(new FileReader(dir+"//filtro.txt"));
	int contLinha=0;			
    while ((line = bf.readLine()) != null)
		{	
			
		    cont = 0;
			inic =35;
			fin = 38;
			contaLinha1++;
	         if(line.length()>11){
				ano = line.substring(9,11);
				id1=line.substring(4,9);
				//System.out.println(id1);
			}
				while(cont<20){
				inic = inic+4;
				fin = fin + 4;
				if((line.length()>=118)){
				str[cont] = line.substring(inic,fin);
					if(!str[cont].equals("   ")){
						var[cont] = Integer.parseInt(str[cont]);
						bin[cont] = Integer.toBinaryString(var[cont]);
						tam[cont] = bin[cont].length();
						dif[cont] = 8 - tam[cont];
					}	
				}
			cont++;
			}
			str[20] = line.substring(0,9);
			contador=0;
			while(contador<20){
			cont5=0;
			while(cont5<dif[contador]){
				bin[contador] = "0"+bin[contador];
				cont5++;
			}
			contador++;
			}
			cont6=0;
			concat = bin[0];
			while(cont6<19){
			concat = concat+bin[cont6+1];
			
			cont6++;
			}
			A[contLinha]=concat+str[20];
			//System.out.println(A[contLinha]);
		//bw.write(concat+str[20]+"\r\n");
        
	contLinha++;
		}
  		k=0;
	for(int i=0;i<contLinha;i++){
  		igual = 0;
  		for(int j=0;j<i;j++)
    		if(A[i].compareTo(A[j])==0){
      		igual = 1;
      		break;
    	}
  		if(igual==0){
  			System.out.println(A[K]);
    		bw.write(A[i]+"\r\n");
    		//B[k] = A[i];
    		k++;
 		}
	}
		bw.close();
		
     }
     catch (IOException ioe) {
	ioe.printStackTrace();
	}

    }
    
    public void separa()throws Exception {
    int conta=0;
    try{
    String dir = "C://Univap";    
     BufferedWriter bw2 = new BufferedWriter(new FileWriter(dir+"//saidafinal.txt"));
     BufferedReader bf2 = new BufferedReader(new FileReader(dir+"//saida3.txt"));
	  	   
	 while ((line = bf2.readLine()) != null)
		{	cont = 0;
			int strInic =0;
			int strFin =5;
			String str1 = line.substring(0,8);
			String str2 = line.substring(8,9);
			String str3 = line.substring(9,15);
			String str4 = line.substring(15,17);
			String str5 = line.substring(17,39);
			String str6 = line.substring(39,60);
			String str7 = line.substring(60,69);
			String str8 = line.substring(69,74);
			String str9 = line.substring(74,80);
			String str10 = line.substring(161,169);
			
			while(conta<4){
			if(str10.substring(strInic,strFin).compareTo("714dc")==0){
			id1=str10.substring(strInic,strFin);
			}
			else{
			strInic++;
			strFin++;	
				
			}
			conta++;
			}
			
			int var1 = Integer.parseInt(str5,2);
			int var2 = Integer.parseInt(str6,2);
			int var3 = Integer.parseInt(str2,2);
			int idTeste=Integer.parseInt(str1,2);
			//System.out.println("ID: "+id1);
			//System.out.println("IdTeste: "+idTeste);
		    if ((id1.compareTo("714dc")==0) && (idTeste==225)){
				idFinal="69070";
				System.out.println("ID: "+idFinal);
			}
			else if ((id1.compareTo("714dc")==0) && (idTeste==242)){
				idFinal="69071";
				//System.out.println("ID: "+idFinal);
			}
			else {
				//System.out.println("ID: "+"ID desconhecido");
				idFinal="00000";
			}
			
			if(var3==0){
				//System.out.println("Tipo de dados = GPS");
			}
			else
			{
				//System.out.println("Tipo de dados = sensores");
			}
			int var4 = Integer.parseInt(str7,2);
			int d=var4;
			int f=d+1524;
			int g=(int)((f-122.1)/365.25);
			int h=(int)(g*365.25);
			int i=(int)((f-h)/30.6001);
			int j=f-h-(int)(i*30.6001);
			int k=0;
			if(i<14){
				k=i-1;
			}else if(i>13){
				k=i-13;
			}
			int dia=j;
			int mes=k;
			int var5 = Integer.parseInt(str8,2);
			int var6 = Integer.parseInt(str9,2);
			longiabs = (var1-(4194304))*0.0001;
			lat = (var2-(2097152))*0.0001;
				data = dia+"/"+mes+"/20"+ano;
			SimpleDateFormat format=new SimpleDateFormat("dd/MM/yyyy"); 
			Date data1=(Date) format.parse(data);
			if((var5<=23 && var6<=59) && (data1.before(new Date()))) {			
			//System.out.println("Longitude " + longiabs);
			//System.out.println("Latitude " + lat);
			//System.out.println("Data " + dia+"/"+mes+"/20"+ano);
			//System.out.println("Hora " + var5+":"+ var6);
			//System.out.println("");
			data_hora = dia+"/"+mes+"/20"+ano+" "+var5+":"+var6;
			data2=dia+"/"+mes+"/20"+ano;
		    hora=var5+":"+var6;
			latitude = lat;
			longitude = longiabs;
			id = (int) (Math.random() *100);
			conecta(data,latitude,longitude,idFinal,data_hora);
			}
			bw2.write(cont+"\r\n");
		}
		bw2.close(); 
	 
    //JOptionPane.showMessageDialog(this,"Valor incorreto!!");
     }
     
     catch (IOException ioe) {
	ioe.printStackTrace();
	}
     catch (ParseException pee) {
	pee.printStackTrace();
	}
    }
    
    public static void main(String[] args)throws Exception {
   	 try{ 
   	 
   	 int tempo = (1000 * 60) * 5;   // 5 min.  
     int periodo = 100;  // quantidade de vezes a ser executado.  
     Timer timer = new Timer();  
      
     timer.scheduleAtFixedRate(  
             new TimerTask() { 
             	 
                 public void run(){  
                     //aqui vai o código que deve ser executado 
                     
        LB2 lb = new LB2();
		lb.procedure();
        lb.FIM();
        lb.LB2();
        lb.separa();
         JOptionPane.showMessageDialog(null,"Verificando mensagens do Satélite");
                 }  
             }, tempo, periodo); 
       	
   	 }catch(Exception e){
   	 	e.printStackTrace();
   	 }
        }
}
xandevieira
try {
      lb.separa();
} catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
}
A
<blockquote>try {

lb.separa();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

</blockquote>

Deu certo!! Valeu!!

Criado 12 de dezembro de 2007
Ultima resposta 12 de dez. de 2007
Respostas 8
Participantes 3