简体   繁体   English

异常未处理

[英]Exception is not handled

When I open the view window, I enter the value of facultyCode and if I enter an existing value, then everything is fine, and if I enter a non-existent value, then the window freezes and nothing happens当我打开视图 window 时,我输入了 FacultyCode 的值,如果我输入一个现有的值,那么一切都很好,如果我输入一个不存在的值,那么 window 会冻结,没有任何反应

CLIENT客户

@FXML
    void initialize() {
        showButton.setOnAction(actionEvent -> {
            String input = null;
            try {
                socket = new Socket("127.0.0.1",3024);
                outputStream = new DataOutputStream(socket.getOutputStream());
                inputStream = new DataInputStream(socket.getInputStream());
            } catch (IOException e) {
                e.printStackTrace();
            }
            String facultyCode = facultyCodeArea.getText();
            String output = "SELECT * FROM Faculty WHERE facultyCode = " + facultyCode + ";";
            try {
                outputStream.writeUTF(output);
                outputStream.flush();
                input = inputStream.readUTF(); //if the input is incorrect, input is not assigned to 
                                               //anything
            } catch (IOException e) {
                e.printStackTrace();
            }
                String[] dataServer = input.split(" ");
                String name = dataServer[0];
                nameArea.setText(name);
                String code = dataServer[1];
                facultyCodeArea.setText(code);
                String number = dataServer[2];
                numberSubjectsArea.setText(number);
                String main = dataServer[3];
                mainSubjectArea.setText(main);
                String dean = dataServer[4];
                deanArea.setText(dean);
                String language = dataServer[5];
                languageStudyArea.setText(language);

        });
    }

SERVER服务器

else if (isSelectQuery(input)) {
    statement = connection.createStatement();
    ResultSet resultSet = statement.executeQuery(input);
    while (resultSet.next()) {
        String name = resultSet.getString("name");
        int codeFaculty = resultSet.getInt("facultyCode");
        int numberSubject = resultSet.getInt("numberSubjects");
        String mainSubject = resultSet.getString("mainSubject");
        String dean = resultSet.getString("dean");
        String languageStudy = resultSet.getString("languageStudy");
        String output = name + " " +
            codeFaculty + " " +
            numberSubject + " " +
            mainSubject + " " +
            dean + " " +
            languageStudy;
            outputStream.writeUTF(output);
            outputStream.flush();
      }
}

I've tried closing the window if an exception occurs, I've also tried closing the window if input = null, but didn't help如果发生异常,我尝试关闭 window,如果输入 = null,我也尝试关闭 window,但没有帮助

SERVER服务器

    String output = "error";
    else if (isSelectQuery(input)) {
        statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(input);
        while (resultSet.next()) {
            String name = resultSet.getString("name");
            int codeFaculty = resultSet.getInt("facultyCode");
            int numberSubject = resultSet.getInt("numberSubjects");
            String mainSubject = resultSet.getString("mainSubject");
            String dean = resultSet.getString("dean");
            String languageStudy = resultSet.getString("languageStudy");
            output = name + " " +
            codeFaculty + " " +
            numberSubject + " " +
            mainSubject + " " +
            dean + " " +
            languageStudy;
            }
        outputStream.writeUTF(output);
        outputStream.flush();
    }

CLIENT客户

@FXML
    void initialize() {
        showButton.setOnAction(actionEvent -> {
            String input = null;
            try {
                socket = new Socket("127.0.0.1",3024);
                outputStream = new DataOutputStream(socket.getOutputStream());
                inputStream = new DataInputStream(socket.getInputStream());
            } catch (IOException e) {
                e.printStackTrace();
            }
            String facultyCode = facultyCodeArea.getText();
            String output = "SELECT * FROM Faculty WHERE facultyCode = " + facultyCode + ";";
            try {
                outputStream.writeUTF(output);
                outputStream.flush();
                input = inputStream.readUTF();
            } catch (IOException e) {
                e.printStackTrace();
            }
            String[] dataServer = input.split(" ");
            if(!dataServer[0].equals("error")) {
                String name = dataServer[0];
                nameArea.setText(name);
                String code = dataServer[1];
                facultyCodeArea.setText(code);
                String number = dataServer[2];
                numberSubjectsArea.setText(number);
                String main = dataServer[3];
                mainSubjectArea.setText(main);
                String dean = dataServer[4];
                deanArea.setText(dean);
                String language = dataServer[5];
                languageStudyArea.setText(language);
            }
            else {
                errorArea.setText("Not exist");
            }
        });
    }

So I first assign output = error and if the request does not return anything, then I send it to the client, if on request something came, I assign values and send it to the client.所以我首先分配 output = 错误,如果请求没有返回任何内容,那么我将其发送给客户端,如果有请求,我分配值并将其发送给客户端。 Next, I process the data on the client接下来,我在客户端处理数据

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM