From 32b6e7442e26230348c2f821fdd77f37aafe3c22 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 10 Feb 2011 11:54:08 +0300 Subject: [PATCH] do not crash AWT on exceptions --- .../application/impl/AWTExceptionHandler.java | 29 +++++++++++++++++++ .../application/impl/ApplicationImpl.java | 2 +- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 platform/platform-impl/src/com/intellij/openapi/application/impl/AWTExceptionHandler.java diff --git a/platform/platform-impl/src/com/intellij/openapi/application/impl/AWTExceptionHandler.java b/platform/platform-impl/src/com/intellij/openapi/application/impl/AWTExceptionHandler.java new file mode 100644 index 000000000000..fc987af2beda --- /dev/null +++ b/platform/platform-impl/src/com/intellij/openapi/application/impl/AWTExceptionHandler.java @@ -0,0 +1,29 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.openapi.application.impl; + +public class AWTExceptionHandler { + public static void register() { + System.setProperty("sun.awt.exception.handler", AWTExceptionHandler.class.getName()); + } + + // the method must be here + @SuppressWarnings({"UnusedParameters"}) + public void handle(Throwable e) { + // error has already been logged + // do nothing, do not crash AWT + } +} diff --git a/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java b/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java index 8a18d775c484..c32c952d4cb2 100644 --- a/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java @@ -167,7 +167,7 @@ public class ApplicationImpl extends ComponentManagerImpl implements Application getPicoContainer().registerComponentInstance(Application.class, this); CommonBundle.assertKeyIsFound = isUnitTestMode; - + AWTExceptionHandler.register(); // do not crash AWT on exceptions if ((isInternal || isUnitTestMode) && !Comparing.equal("off", System.getProperty("idea.disposer.debug"))) { Disposer.setDebugMode(true); }