Я имею в виду использование функции axis () для замены значений «на» оси X.
Существует различие между неперехваченными исключениями в EDT и вне EDT.
Другой вопрос имеет решение для оба , но если Вы хотите просто уничтоженную часть EDT...
class AWTExceptionHandler {
public void handle(Throwable t) {
try {
// insert your exception handling code here
// or do nothing to make it go away
} catch (Throwable t) {
// don't let the exception get thrown out, will cause infinite looping!
}
}
public static void registerExceptionHandler() {
System.setProperty('sun.awt.exception.handler', AWTExceptionHandler.class.getName())
}
}
Немного дополнения к shemnon с anwer:
В первый раз, когда непойманный RuntimeException (или Ошибка) происходит в EDT, он ищет свойство "sun.awt.exception.handler" и пытается загрузить класс, связанный со свойством. EDT нужен класс Обработчика, чтобы иметь конструктора по умолчанию, иначе EDT не будет использовать его.
, Если необходимо принести немного больше динамики в историю обработки, Вы вынуждены сделать это со статическими операциями, потому что класс инстанцирует EDT и поэтому не имеет никакого шанса получить доступ к другим ресурсам кроме помех. Вот код обработчика исключений от нашей платформы Swing, которую мы используем. Это было записано для Java 1.4, и это работало довольно прекрасное там:
public class AwtExceptionHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(AwtExceptionHandler.class);
private static List exceptionHandlerList = new LinkedList();
/**
* WARNING: Don't change the signature of this method!
*/
public void handle(Throwable throwable) {
if (exceptionHandlerList.isEmpty()) {
LOGGER.error("Uncatched Throwable detected", throwable);
} else {
delegate(new ExceptionEvent(throwable));
}
}
private void delegate(ExceptionEvent event) {
for (Iterator handlerIterator = exceptionHandlerList.iterator(); handlerIterator.hasNext();) {
IExceptionHandler handler = (IExceptionHandler) handlerIterator.next();
try {
handler.handleException(event);
if (event.isConsumed()) {
break;
}
} catch (Throwable e) {
LOGGER.error("Error while running exception handler: " + handler, e);
}
}
}
public static void addErrorHandler(IExceptionHandler exceptionHandler) {
exceptionHandlerList.add(exceptionHandler);
}
public static void removeErrorHandler(IExceptionHandler exceptionHandler) {
exceptionHandlerList.remove(exceptionHandler);
}
}
Hope это помогает.
Существует два пути:
я не знаю если последние работы над не-Sun jvms.
-
Действительно, первое не корректно, это - только механизм для обнаружения разрушенного потока.