Кто-либо успешно использовал вышеупомянутый оператор для ловли исключения, прежде чем это перейдет к браузеру как предупреждение?.
Я зарегистрировал пользовательский Обработчик исключений в первой строке моей точки входа приложения. Но это не ловит исключение как ожидалось.
public void onModuleLoad(){
GWT.setUncaughtExceptionHandler(new MyExceptionHandler());
...
....
}
Править
Вот мои два класса:
Я ожидаю, что мой system.out распечатает детали исключения, и исключение будут глотать и нельзя отправить в браузер.
Или я неправильно?
package mypackage;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
public class MyEntryPoint implements EntryPoint {
public void onModuleLoad() {
GWT.setUncaughtExceptionHandler(new ClientExceptionHandler());
startApplication();
}
private void startApplication() {
Integer.parseInt("I_AM_NOT_NUMBER");
}
}
package mypackage;
import com.google.gwt.core.client.GWT;
public class ClientExceptionHandler implements GWT.UncaughtExceptionHandler {
@Override
public void onUncaughtException(Throwable cause) {
System.out.println(cause.getMessage());
}
}
Я полагаю, что здесь происходит то, что текущий цикл событий JS использует DefaultUncaughtExceptionHandler, потому что именно этот обработчик был установлен в начале цикла. Вам нужно отложить дальнейшую инициализацию до следующего цикла событий, примерно так:
public void onModuleLoad() {
GWT.setUncaughtExceptionHandler(new ClientExceptionHandler());
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
startApplication();
Window.alert("You won't see this");
}
});
}
private void startApplication() {
Integer.parseInt("I_AM_NOT_A_NUMBER");
// or any exception that results from server call
}
Обновление: И вот проблема, которая описывает, почему это работает, и почему это не планируется исправить.
Вам следует попробовать следующее:
public void onModuleLoad(){
GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
onUncaughtException(Throwable t) {
// Do stuff here
}
});
}
и посмотреть, поможет ли это.