void cannot be dereferenced

java

Solution

Your problem is that `printStackTrace` doesn't return anything, so there's nothing to convert to a string. Write it like this.

PrintWriter writer = new PrintWriter(fw);
sqle.printStackTrace(writer);
writer.close();

Problem

I have a method of editing members, and I want to print out errors into a file, but I keep getting the void cannot be dereferenced error if I try to print out the stack trace into a Error_Report.txt file. Is there anyway I can print it out? This is my code. ``` public void edit() { FileWriter fw = new FileWriter(new File("Error_Report.txt")); Connection con; Statement stmt; ResultSet rs; int id = (int)_id.getSelectedItem(); String name = _name.getText(); String user = _username.getText(); String pass = _password.getText(); String pos = _position.getSelectedItem().toString(); try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("jdbc:odbc:collegesys", "root", "0blivi0n"); stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); PreparedStatement prep = con.prepareStatement("UPDATE `main` WHERE ID = ?"); prep.setInt(1, id); prep.setString(2, name); prep.setString(3, user); prep.setString(4, pass); prep.setString(5, pos); prep.execute(); } catch(SQLException sqle) { String sql = sqle.printStackTrace().toString(); fw.write("" + sql); } catch(ClassNotFoundException cnfe) { fw.write("" + cnfe); } } ```

Original source