Problema com Exception

4 respostas
jeff_uesc

Tenhu uma classe CompanyDAO num siteminha que estou fazendo, com o seguinte método

public DefaultListModel getList() throws SQLException {
        DefaultListModel lista = new DefaultListModel();
        PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM COMPANY");
        ResultSet rs;
        try {
            this.connection = new ConnectionFactory().getConnection();
            rs = stmt.executeQuery();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            connection.close();
        }
        while(rs.next()){
            Company company = new Company();
            company.setSigla(rs.getString("ID"));
            company.setSigla(rs.getString("NAME"));
            lista.addElement(company);
        }
        rs.close();
        stmt.close();
        return lista;
    }

Então to fazendo uma JTable pra apresentar os dados do DB...

package visual;

import database.CompanyDAO;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 * @author Jefferson Santana Silva
 */
public class Consulta extends JFrame throws SQLException {

    public static final int ROWS = 10;
    String[] columnNames = {"Sigla","Nome"};
    JTable table = new JTable(new DefaultTableModel(columnNames,ROWS));
    DefaultListModel lista = new CompanyDAO().getList();
}

Mas aparece o erro...

'{' expected
public class Consulta extends JFrame throws SQLException {
1 error

4 Respostas

ViniGodoy

Trate direito as exceptions.

  1. Ponha um try…finally dentro do try…catch que trata a SQLException;
  2. Ponha o close() do ResultSet e do Statement no finally;
  3. Não dispare SQLException no método getList(), deixe que a RuntimeException trate isso;
  4. Não é possível fazer throws SQLException { na declaração de uma classe.
jeff_uesc

Muito obrigado pela ajuda, porém agora tenho outras duvidas.

1º Não entendi bem como fzr essa parte do try… finaly dentro do try… catch, seria algo assim?

try { try { this.connection = new ConnectionFactory().getConnection(); rs = stmt.executeQuery(); } finally { connection.close(); rs.close(); stmt.close(); } } catch (SQLException e) { throw new RuntimeException(e); }

2º Quando vc fala em não disparar SQLException, fala do "throws SQLException"n eh? pq nesse caso, quando eu removo vários outros erros aparecem.

ViniGodoy

Isso mesmo.

Se vc capturar todas as SQLException dentro do seu método e transforma-las em RuntimeExceptions, ele não vai mais exigir esse throws aí.

jeff_uesc

Fiz do jeito que você indicou, muito melhor mesmo. Valeu pela ajuda!

Criado 21 de janeiro de 2011
Ultima resposta 23 de jan. de 2011
Respostas 4
Participantes 2