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; }