public static void processException(Throwable t) { StartupAbortedException se = null; if (t instanceof StartupAbortedException) { se = (StartupAbortedException) t; } else if (t.getCause() instanceof StartupAbortedException) { se = (StartupAbortedException) t.getCause(); } else if (!IdeaApplication.isLoaded()) { se = new StartupAbortedException(t); } if (se != null) { if (se.logError()) { try { if (Logger.isInitialized() && !(t instanceof ProcessCanceledException)) { getLogger().error(t); } } catch (Throwable ignore) { } Main.showMessage("Start Failed", t); } System.exit(se.exitCode()); } if (!(t instanceof ProcessCanceledException)) { getLogger().error(t); } }
public static void handleComponentError( Throwable t, @Nullable String componentClassName, @Nullable ComponentConfig config) { if (t instanceof StartupAbortedException) { throw (StartupAbortedException) t; } PluginId pluginId = null; if (config != null) { pluginId = config.getPluginId(); } if (pluginId == null || CORE_PLUGIN_ID.equals(pluginId.getIdString())) { if (componentClassName != null) { pluginId = getPluginByClassName(componentClassName); } } if (pluginId == null || CORE_PLUGIN_ID.equals(pluginId.getIdString())) { if (t instanceof PicoPluginExtensionInitializationException) { pluginId = ((PicoPluginExtensionInitializationException) t).getPluginId(); } } if (pluginId != null && !CORE_PLUGIN_ID.equals(pluginId.getIdString())) { getLogger().warn(t); disablePlugin(pluginId.getIdString()); StringWriter message = new StringWriter(); message .append("Plugin '") .append(pluginId.getIdString()) .append("' failed to initialize and will be disabled. "); message .append(" Please restart ") .append(ApplicationNamesInfo.getInstance().getFullProductName()) .append('.'); message.append("\n\n"); t.printStackTrace(new PrintWriter(message)); Main.showMessage("Plugin Error", message.toString(), false); throw new StartupAbortedException(t).exitCode(Main.PLUGIN_ERROR).logError(false); } else { throw new StartupAbortedException("Fatal error initializing '" + componentClassName + "'", t); } }