Странно, что это происходит, потому что, как я вижу, все правильно. Если вы можете мне помочь, я буду благодарен Вот код:
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.Statement;
public class Server{
private static HashSet<String> users = new HashSet<String>();
//private static HashSet<String> passwords = new HashSet<String>();
private static HashSet<PrintWriter> writers = new HashSet<PrintWriter>();
private static final int port = 9001;
private static class SocketHandler extends Thread{
PrintWriter output;
BufferedReader input;
String name;
//String pass;
Socket socket;
public SocketHandler(Socket sc){
this.socket = sc;
}
public void run(){
input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output = new PrintWriter(socket.getOutputStream(), true);
try{
while(true){
output.println("SUBMITNAME");
name = input.readLine();
if(name == null){
return;
}
synchronized(users){
if(!users.contains(name)){
users.add(name);
break;
}
}
}
output.println("NAMEACCEPTED");
writers.add(output);
while(true){
String in = input.readLine();
if(in == null){
return;
}
for(PrintWriter writer : writers){
writer.println("MESSAGE: " + name + ": " + in);
}
}
}catch(IOException e){
System.out.println(e);
}finally{
if(name != null){
users.remove(name);
}
if(output != null){
writers.remove(output);
}
try{
socket.close();
}catch(IOException e){
System.out.println(e);
}
}
}
}
public static void main(String[]args) throws Exception{
ServerSocket listener = new ServerSocket(port);
System.out.println("The server is now running...");
try{
while(true){
new SocketHandler(listener.accept()).start();
}
}catch(IOException e){
System.out.println(e);
}finally{
listener.close();
}
Connection con = null;
ResultSet rs = null;
Statement s = null;
try{
Class.forName("org.sqlite.JDBC");
con = DriverManager.getConnection("jdbc:sqlite:/home/julio/Documents/Prueba.db");
s = con.createStatement();
rs = s.executeQuery("E-MAIL DATABASE");
while(rs.next()){
System.out.println("Enter your email adress: " + rs.getString("name"));
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
rs.close();
s.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
Я не знаю, почему это происходит, если, как вы можете видеть в коде, я выбрасываю и ловлю каждое исключение.
Это ошибка, которая отображается на экране
IOException: must be caught or declared to be thrown.
Что тебе непонятно? Переместите свой оператор внутрь блокаtry
. - person Sotirios Delimanolis   schedule 15.11.2013