diff --git a/core/src/main/java/hudson/util/PersistedList.java b/core/src/main/java/hudson/util/PersistedList.java
index <HASH>..<HASH> 100644
--- a/core/src/main/java/hudson/util/PersistedList.java
+++ b/core/src/main/java/hudson/util/PersistedList.java
@@ -174,13 +174,13 @@ public class PersistedList<T> extends AbstractList<T> {
     }
 
     /**
-     * Version of {@link #_onModified()} that swallows an exception for compliance with {@link List}.
+     * Version of {@link #onModified()} that throws an unchecked exception for compliance with {@link List}.
      */
     private void _onModified() {
         try {
             onModified();
         } catch (IOException e) {
-            throw new Error(e);
+            throw new RuntimeException(e);
         }
     }
Do not throw Error for a recoverable condition.
In this case, someone tried to add an element to a persisted list, and it was added in memory but the configuration could not be saved.
Unclear whether that should even be treated as an error condition (the write failure might be transient, and a subsequent write would store the addition),
but if it should be then we should throw a simple runtime exception.