From f59cc8246ca900f1fbd9c191ea8fd8713b65f57d Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Tue, 29 Aug 2017 19:13:36 +0300 Subject: [PATCH] [platform] fault-tolerant bindings initialization --- .../src/com/intellij/configurationStore/xmlSerializer.kt | 6 +++++- .../util/src/com/intellij/util/xmlb/XmlSerializerImpl.java | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/platform/projectModel-impl/src/com/intellij/configurationStore/xmlSerializer.kt b/platform/projectModel-impl/src/com/intellij/configurationStore/xmlSerializer.kt index af4ca287c52c..6651be07dec2 100644 --- a/platform/projectModel-impl/src/com/intellij/configurationStore/xmlSerializer.kt +++ b/platform/projectModel-impl/src/com/intellij/configurationStore/xmlSerializer.kt @@ -167,7 +167,11 @@ private val serializer = object : XmlSerializerImpl.XmlSerializerBase() { try { binding.init(originalType, this) } - catch (e: XmlSerializationException) { + catch (e: RuntimeException) { + map.remove(key) + throw e + } + catch (e: Error) { map.remove(key) throw e } diff --git a/platform/util/src/com/intellij/util/xmlb/XmlSerializerImpl.java b/platform/util/src/com/intellij/util/xmlb/XmlSerializerImpl.java index 935bb730fb56..3191b3c19638 100644 --- a/platform/util/src/com/intellij/util/xmlb/XmlSerializerImpl.java +++ b/platform/util/src/com/intellij/util/xmlb/XmlSerializerImpl.java @@ -132,7 +132,11 @@ public final class XmlSerializerImpl { try { binding.init(originalType, this); } - catch (XmlSerializationException e) { + catch (RuntimeException e) { + map.remove(key); + throw e; + } + catch (Error e) { map.remove(key); throw e; }