GWT.setUncaughtExceptionHandler ()

Кто-либо успешно использовал вышеупомянутый оператор для ловли исключения, прежде чем это перейдет к браузеру как предупреждение?.

Я зарегистрировал пользовательский Обработчик исключений в первой строке моей точки входа приложения. Но это не ловит исключение как ожидалось.

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());
    }
}
15
задан skaffman 5 December 2011 в 16:30
поделиться

2 ответа

Я полагаю, что здесь происходит то, что текущий цикл событий 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
}

Обновление: И вот проблема, которая описывает, почему это работает, и почему это не планируется исправить.

21
ответ дан 1 December 2019 в 03:34
поделиться

Вам следует попробовать следующее:

public void onModuleLoad(){
    GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
        onUncaughtException(Throwable t) {
            // Do stuff here
        }
    });
}

и посмотреть, поможет ли это.

0
ответ дан 1 December 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: