Я не уверен, что правильный метод должен был бы исключать исключения из асинхронных методов в GWT. У меня есть dataservice, который подключается к базе данных, запрашивает информацию и затем возвращает ее клиенту. Но я не понимаю принципиально, что делать, когда происходит проверенное исключение и как его обрабатывать.Каков правильный способ пропускать исключения в асинхронных методах в GWT?
В настоящее время у меня есть что-то вроде этого
public int addAssembler(int assemblerID, String name, boolean active) {
Connection con = connect();
PreparedStatement ps = null;
ResultSet rs = null;
try {
String query = "INSERT INTO assemblers (name, hidden) VALUES ('" + name + "'," + active + ")";
ps = con.prepareStatement(query);
System.out.println("addAssembler " + ps.toString());
ps.executeUpdate(query);
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(rs, ps, con);
}
return 1;
}
и называется здесь
public void onClick(ClickEvent event) {
Ioma.dataservice.addAssembler(0, name.getText(), !isActive.getValue(), new AsyncCallback<Integer>() {
@Override
public void onFailure(Throwable caught) {
Window.alert("Failed to add assembler! Please check error log" + caught.toString());
}
@Override
public void onSuccess(Integer result) {
Window.alert("Assembler " + name.getText() + " added");
}
});
Я понимаю, что SQLException поймана в моей Try/уловом, но я хотел бы метод потерпеть неудачу и я хотел бы передать его обратно в Failure, как мне это сделать? Я попробовал
public int addAssembler(parameters) throws SQLException {}
но он дает мне исходный код не найдена ошибка для SQLException. Я также не уверен, что это правильный способ сделать это? Есть ли способ лучше?
BTW: Вам не нужно делать это для всех 'Exception', только те, которые не [эмулируются уже] (http://www.gwtproject.org/doc/latest/RefJreEmulation.html). – Baz
И не забудьте зарегистрировать его на сервере. И подумайте о том, что вы действительно отправляете полную трассировку стека и сообщение исключения SQL для клиента - если возникла проблема с SQL-инъекцией или связью, вы действительно хотите отправить «эй», вот как вы сломать меня!' сообщение браузеру? –