try to use IllegalStateException instead of RuntimeException

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1904051 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/poi-ooxml/src/main/java/org/apache/poi/ooxml/extractor/POIXMLPropertiesTextExtractor.java b/poi-ooxml/src/main/java/org/apache/poi/ooxml/extractor/POIXMLPropertiesTextExtractor.java
index c5a36d7..3709fdd 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/ooxml/extractor/POIXMLPropertiesTextExtractor.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/ooxml/extractor/POIXMLPropertiesTextExtractor.java
@@ -273,7 +273,7 @@
                             getExtendedPropertiesText() +
                             getCustomPropertiesText();
         } catch (Exception e) {
-            throw new RuntimeException(e);
+            throw new IllegalStateException(e);
         }
     }
 
diff --git a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java
index 4625a94..d1d8b34 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java
@@ -1413,7 +1413,7 @@
         try {
             partMarshallers.remove(new ContentType(contentType));
         } catch (InvalidFormatException e) {
-            throw new RuntimeException(e);
+            throw new IllegalStateException(e);
         }
     }
 
@@ -1427,7 +1427,7 @@
         try {
             partUnmarshallers.remove(new ContentType(contentType));
         } catch (InvalidFormatException e) {
-            throw new RuntimeException(e);
+            throw new IllegalStateException(e);
         }
     }
 
diff --git a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
index 942c22c..3c300d7 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
@@ -493,7 +493,7 @@
          */
         String signatureId = signatureConfig.getPackageSignatureId();
         if (!signatureId.equals(document.getDocumentElement().getAttribute("Id"))) {
-            throw new RuntimeException("ds:Signature not found for @Id: " + signatureId);
+            throw new IllegalStateException("ds:Signature not found for @Id: " + signatureId);
         }
 
         /*
@@ -501,7 +501,7 @@
          */
         final Element signatureNode = getDsigElement(document, "SignatureValue");
         if (signatureNode == null) {
-            throw new RuntimeException("preSign has to be called before postSign");
+            throw new IllegalStateException("preSign has to be called before postSign");
         }
         signatureNode.setTextContent(signatureValue);
 
@@ -675,7 +675,7 @@
                 RelationshipTransformService.registerDsigProvider();
                 CryptoFunctions.registerBouncyCastle();
             } catch (Exception e) {
-                throw new RuntimeException("Xml & BouncyCastle-Provider initialization failed", e);
+                throw new IllegalStateException("Xml & BouncyCastle-Provider initialization failed", e);
             }
         }
 
@@ -710,7 +710,7 @@
         }
 
         private RuntimeException providerNotFound() {
-            return new RuntimeException("JRE doesn't support default xml signature provider - set jsr105Provider system property!");
+            return new IllegalStateException("JRE doesn't support default xml signature provider - set jsr105Provider system property!");
         }
     }
 
diff --git a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/KeyInfoSignatureFacet.java b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/KeyInfoSignatureFacet.java
index 84cccec..43be465 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/KeyInfoSignatureFacet.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/KeyInfoSignatureFacet.java
@@ -84,7 +84,7 @@
             try {
                 keyValue = keyInfoFactory.newKeyValue(signingCertificate.getPublicKey());
             } catch (KeyException e) {
-                throw new RuntimeException("key exception: " + e.getMessage(), e);
+                throw new IllegalStateException("key exception: " + e.getMessage(), e);
             }
             keyInfoContent.add(keyValue);
         }
@@ -137,7 +137,7 @@
         if (nextSibling != null) {
             NodeList kiNl = document.getElementsByTagNameNS(XML_DIGSIG_NS, "KeyInfo");
             if (kiNl.getLength() != 1) {
-                throw new RuntimeException("KeyInfo wasn't set");
+                throw new IllegalStateException("KeyInfo wasn't set");
             }
             nextSibling.getParentNode().insertBefore(kiNl.item(0), nextSibling);
         }
diff --git a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java
index b87bd95..f69bb33 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java
@@ -169,7 +169,7 @@
         SignatureConfig signatureConfig = signatureInfo.getSignatureConfig();
         List<X509Certificate> chain = signatureConfig.getSigningCertificateChain();
         if (chain == null || chain.isEmpty()) {
-            throw new RuntimeException("no signing certificate chain available");
+            throw new IllegalStateException("no signing certificate chain available");
         }
         CertIDListType signingCertificates = signedSignatureProperties.addNewSigningCertificate();
         CertIDType certId = signingCertificates.addNewCert();
@@ -332,7 +332,7 @@
         try {
             encodedCertificate = certificate.getEncoded();
         } catch (CertificateEncodingException e) {
-            throw new RuntimeException("certificate encoding error: "
+            throw new IllegalStateException("certificate encoding error: "
                     + e.getMessage(), e);
         }
         DigestAlgAndValueType certDigest = certId.addNewCertDigest();
diff --git a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESXLSignatureFacet.java b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESXLSignatureFacet.java
index a83d291..a9d0a41 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESXLSignatureFacet.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESXLSignatureFacet.java
@@ -94,7 +94,7 @@
         try {
             this.certificateFactory = CertificateFactory.getInstance("X.509");
         } catch (CertificateException e) {
-            throw new RuntimeException("X509 JCA error: " + e.getMessage(), e);
+            throw new IllegalStateException("X509 JCA error: " + e.getMessage(), e);
         }
     }
 
@@ -225,7 +225,7 @@
                     crl = (X509CRL) this.certificateFactory
                         .generateCRL(new UnsynchronizedByteArrayInputStream(encodedCrl));
                 } catch (CRLException e) {
-                    throw new RuntimeException("CRL parse error: " + e.getMessage(), e);
+                    throw new IllegalStateException("CRL parse error: " + e.getMessage(), e);
                 }
 
                 CRLIdentifierType crlIdentifier = crlRef.addNewCRLIdentifier();
@@ -277,7 +277,7 @@
                         responderId.setByName(nameStr);
                     }
                 } catch (Exception e) {
-                    throw new RuntimeException("OCSP decoding error: " + e.getMessage(), e);
+                    throw new IllegalStateException("OCSP decoding error: " + e.getMessage(), e);
                 }
             }
         }
@@ -294,7 +294,7 @@
                 certificateValues.addNewEncapsulatedX509Certificate().setByteArrayValue(certificate.getEncoded());
             }
         } catch (CertificateEncodingException e) {
-            throw new RuntimeException("certificate encoding error: " + e.getMessage(), e);
+            throw new IllegalStateException("certificate encoding error: " + e.getMessage(), e);
         }
     }
 
@@ -312,7 +312,7 @@
         } catch (RuntimeException e) {
             throw e;
         } catch (Exception e) {
-            throw new RuntimeException("c14n error: " + e.getMessage(), e);
+            throw new IllegalStateException("c14n error: " + e.getMessage(), e);
         }
     }
 
@@ -330,7 +330,7 @@
                 return integer.getPositiveValue();
             }
         } catch (IOException e) {
-            throw new RuntimeException("I/O error: " + e.getMessage(), e);
+            throw new IllegalStateException("I/O error: " + e.getMessage(), e);
         }
     }
 
@@ -346,7 +346,7 @@
         try {
             timeStampToken = signatureConfig.getTspService().timeStamp(signatureInfo, c14nSignatureValueElement, revocationData);
         } catch (Exception e) {
-            throw new RuntimeException("error while creating a time-stamp: "
+            throw new IllegalStateException("error while creating a time-stamp: "
                 + e.getMessage(), e);
         }
 
diff --git a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/services/TSPTimeStampService.java b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/services/TSPTimeStampService.java
index 0f55312..2e845e2 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/services/TSPTimeStampService.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/services/TSPTimeStampService.java
@@ -133,7 +133,7 @@
         byte[] responseBytes = response.getResponseBytes();
 
         if (responseBytes.length == 0) {
-            throw new RuntimeException("Content-Length is zero");
+            throw new IllegalStateException("Content-Length is zero");
         }
 
         // TSP response parsing and validation
@@ -150,7 +150,7 @@
                     LOG.atDebug().log("unaccepted policy");
                 }
             }
-            throw new RuntimeException("timestamp response status != 0: "
+            throw new IllegalStateException("timestamp response status != 0: "
                     + timeStampResponse.getStatus());
         }
         TimeStampToken timeStampToken = timeStampResponse.getTimeStampToken();
@@ -171,7 +171,7 @@
             .filter(h -> signerCertIssuer.equals(h.getIssuer())
                 && signerCertSerialNumber.equals(h.getSerialNumber()))
             .findFirst()
-            .orElseThrow(() -> new RuntimeException("TSP response token has no signer certificate"));
+            .orElseThrow(() -> new IllegalStateException("TSP response token has no signer certificate"));
 
         JcaX509CertificateConverter x509converter = new JcaX509CertificateConverter();
         x509converter.setProvider("BC");
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
index 3392f3a..3a6b4c6 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
@@ -279,7 +279,7 @@
         try {
             return getPackage().getUnusedPartIndex(relationType.getDefaultFileName());
         } catch (InvalidFormatException e) {
-            throw new RuntimeException(e);
+            throw new IllegalStateException(e);
         }
     }
 
@@ -695,14 +695,14 @@
     String importBlip(String blipId, POIXMLDocumentPart parent, POIXMLDocumentPart target) {
         OPCPackage targetPackage = target.getPackagePart().getPackage();
         if (targetPackage != getPackage()) {
-            throw new RuntimeException("the target document part is not a child of this package");
+            throw new IllegalStateException("the target document part is not a child of this package");
         }
         final POIXMLDocumentPart docPart = parent.getRelationPartById(blipId).getDocumentPart();
         XSLFPictureData parData;
         if (docPart instanceof XSLFPictureData) {
             parData = (XSLFPictureData)docPart;
         } else {
-            throw new RuntimeException("cannot import blip " + blipId + " - its document part is not XSLFPictureData");
+            throw new IllegalStateException("cannot import blip " + blipId + " - its document part is not XSLFPictureData");
         }
         final XSLFPictureData pictureData;
         if (targetPackage == parent.getPackagePart().getPackage()) {
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFFontInfo.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFFontInfo.java
index 1e74621..70ce9e5 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFFontInfo.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFFontInfo.java
@@ -212,7 +212,7 @@
                 try {
                     fntDataIdx = ppt.getPackage().getUnusedPartIndex(fntRel.getDefaultFileName());
                 } catch (InvalidFormatException e) {
-                    throw new RuntimeException(e);
+                    throw new IllegalStateException(e);
                 }
 
                 POIXMLDocumentPart.RelationPart rp = ppt.createRelationship(fntRel, XSLFFactory.getInstance(), fntDataIdx, false);
@@ -235,7 +235,7 @@
                     header.init(buf, 0, buf.length);
                 } catch (IOException e) {
                     // TODO: better exception class
-                    throw new RuntimeException(e);
+                    throw new IllegalStateException(e);
                 }
             }
         }
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTexturePaint.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTexturePaint.java
index c0b1f14..bb9c04e 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTexturePaint.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTexturePaint.java
@@ -84,7 +84,7 @@
         try {
             return getPart().getInputStream();
         } catch (Exception e) {
-            throw new RuntimeException("Failed to read image data", e);
+            throw new IllegalStateException("Failed to read image data", e);
         }
     }
 
@@ -97,7 +97,7 @@
         try {
             return getPart().getContentType();
         } catch (InvalidFormatException e) {
-            throw new RuntimeException("Failed to read package part", e);
+            throw new IllegalStateException("Failed to read package part", e);
         }
     }
 
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/util/DummyFormat.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/util/DummyFormat.java
index c1cf538..b090c34 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/util/DummyFormat.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/util/DummyFormat.java
@@ -37,7 +37,7 @@
             bos = new UnsynchronizedByteArrayOutputStream();
             dummy2d = new DummyGraphics2d(new PrintStream(bos, true, StandardCharsets.UTF_8.name()));
         } catch (UnsupportedEncodingException e) {
-            throw new RuntimeException(e);
+            throw new IllegalStateException(e);
         }
     }
 
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/util/PPTHandler.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/util/PPTHandler.java
index 5a70ea9..48de2bd 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/util/PPTHandler.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/util/PPTHandler.java
@@ -179,7 +179,7 @@
                 return IOUtils.toByteArray(is);
             } catch (IOException e) {
                 // TODO: change to custom runtime exception
-                throw new RuntimeException(e);
+                throw new IllegalStateException(e);
             }
         });
         return embed;
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java
index 2fc9cfe..fd008f3 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java
@@ -245,7 +245,7 @@
             sheetParser.setContentHandler(handler);
             sheetParser.parse(sheetSource);
         } catch (ParserConfigurationException e) {
-            throw new RuntimeException("SAX parser appears to be broken - " + e.getMessage());
+            throw new IllegalStateException("SAX parser appears to be broken - " + e.getMessage());
         }
     }
 
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/DeferredSXSSFSheet.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/DeferredSXSSFSheet.java
index 42e7d2a..4baa90b 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/DeferredSXSSFSheet.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/DeferredSXSSFSheet.java
@@ -48,7 +48,7 @@
      */
     @Override
     public InputStream getWorksheetXMLInputStream() throws IOException {
-        throw new RuntimeException("Not supported by DeferredSXSSFSheet");
+        throw new IllegalStateException("Not supported by DeferredSXSSFSheet");
     }
 
     /**
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/DeferredSXSSFWorkbook.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/DeferredSXSSFWorkbook.java
index 6483a33..37186f8 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/DeferredSXSSFWorkbook.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/DeferredSXSSFWorkbook.java
@@ -58,7 +58,7 @@
     @NotImplemented
     @Override
     protected SheetDataWriter createSheetDataWriter() throws IOException {
-        throw new RuntimeException("Not supported by DeferredSXSSFWorkbook");
+        throw new IllegalStateException("Not supported by DeferredSXSSFWorkbook");
     }
 
     protected StreamingSheetWriter createSheetDataWriter(OutputStream out) throws IOException {
@@ -79,7 +79,7 @@
         try {
             sxSheet = new DeferredSXSSFSheet(this, xSheet);
         } catch (IOException ioe) {
-            throw new RuntimeException(ioe);
+            throw new IllegalStateException(ioe);
         }
         registerSheetMapping(sxSheet, xSheet);
         return sxSheet;
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFSheet.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFSheet.java
index c0007cf..748117d 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFSheet.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFSheet.java
@@ -154,7 +154,7 @@
             try {
                 flushRows(_randomAccessWindowSize);
             } catch (IOException ioe) {
-                throw new RuntimeException(ioe);
+                throw new IllegalStateException(ioe);
             }
         }
         return newRow;
@@ -981,7 +981,7 @@
     @NotImplemented
     @Override
     public void shiftRows(int startRow, int endRow, int n) {
-        throw new RuntimeException("Not Implemented");
+        throw new IllegalStateException("Not Implemented");
     }
 
     /**
@@ -1005,7 +1005,7 @@
     @NotImplemented
     @Override
     public void shiftRows(int startRow, int endRow, int n, boolean copyRowHeight, boolean resetOriginalRowHeight) {
-        throw new RuntimeException("Not Implemented");
+        throw new IllegalStateException("Not Implemented");
     }
 
     /**
@@ -1361,7 +1361,7 @@
             collapseRow(row);
         } else {
             //expandRow(rowIndex);
-            throw new RuntimeException("Unable to expand row: Not Implemented");
+            throw new IllegalStateException("Unable to expand row: Not Implemented");
         }
     }
 
@@ -1761,7 +1761,7 @@
         // corrupted .xlsx files as rows appear multiple times in the resulting sheetX.xml files
         // return _sh.setArrayFormula(formula, range);
 
-        throw new RuntimeException("Not Implemented");
+        throw new IllegalStateException("Not Implemented");
     }
 
     /**
@@ -1776,7 +1776,7 @@
         // corrupted .xlsx files as rows appear multiple times in the resulting sheetX.xml files
         // return _sh.removeArrayFormula(cell);
 
-        throw new RuntimeException("Not Implemented");
+        throw new IllegalStateException("Not Implemented");
     }
 
     @Override
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
index 560c196..e8b881f 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
@@ -725,7 +725,7 @@
         try {
             sxSheet = new SXSSFSheet(this,xSheet);
         } catch (IOException ioe) {
-            throw new RuntimeException(ioe);
+            throw new IllegalStateException(ioe);
         }
         registerSheetMapping(sxSheet,xSheet);
         return sxSheet;
@@ -755,7 +755,7 @@
     @Override
     @NotImplemented
     public Sheet cloneSheet(int sheetNum) {
-        throw new RuntimeException("Not Implemented");
+        throw new IllegalStateException("Not Implemented");
     }
 
 
@@ -1320,7 +1320,7 @@
     @Override
     @NotImplemented
     public int linkExternalWorkbook(String name, Workbook workbook) {
-        throw new RuntimeException("Not Implemented");
+        throw new IllegalStateException("Not Implemented");
     }
 
     /**
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/StreamingSheetWriter.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/StreamingSheetWriter.java
index bd500bf..91b7b95 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/StreamingSheetWriter.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/StreamingSheetWriter.java
@@ -41,7 +41,7 @@
     private boolean closed = false;
 
     public StreamingSheetWriter() throws IOException {
-        throw new RuntimeException("StreamingSheetWriter requires OutputStream");
+        throw new IllegalStateException("StreamingSheetWriter requires OutputStream");
     }
 
     public StreamingSheetWriter(OutputStream out) throws IOException {
@@ -51,12 +51,12 @@
 
     @Override
     public File createTempFile() throws IOException {
-        throw new RuntimeException("Not supported with StreamingSheetWriter");
+        throw new IllegalStateException("Not supported with StreamingSheetWriter");
     }
 
     @Override
     public Writer createWriter(File fd) throws IOException {
-        throw new RuntimeException("Not supported with StreamingSheetWriter");
+        throw new IllegalStateException("Not supported with StreamingSheetWriter");
     }
 
     /**
@@ -77,7 +77,7 @@
 
     @Override
     public InputStream getWorksheetXMLInputStream() throws IOException {
-        throw new RuntimeException("Not supported with StreamingSheetWriter");
+        throw new IllegalStateException("Not supported with StreamingSheetWriter");
     }
 
     @Override
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
index c1b5eb1..c21f059 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
@@ -131,7 +131,7 @@
         }
 
         // Not properly referenced
-        throw new RuntimeException("Book not linked for filename " + bookName);
+        throw new IllegalStateException("Book not linked for filename " + bookName);
     }
     /* This is case-sensitive. Is that correct? */
     private int findExternalLinkIndex(String bookName, List<ExternalLinksTable> tables) {
@@ -317,7 +317,7 @@
     @Override
     @NotImplemented
     public int getExternalSheetIndex(String workbookName, String sheetName) {
-        throw new RuntimeException("not implemented yet");
+        throw new IllegalStateException("not implemented yet");
     }
     @Override
     public int getSheetIndex(String sheetName) {
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFFormulaEvaluator.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFFormulaEvaluator.java
index 8b3eef1..f47d255 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFFormulaEvaluator.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFFormulaEvaluator.java
@@ -75,7 +75,7 @@
         if (eval instanceof ErrorEval) {
             return CellValue.getError(((ErrorEval)eval).getErrorCode());
         }
-        throw new RuntimeException("Unexpected eval class (" + eval.getClass().getName() + ")");
+        throw new IllegalStateException("Unexpected eval class (" + eval.getClass().getName() + ")");
     }
 
     /**
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFBuiltinTableStyle.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFBuiltinTableStyle.java
index 347f189..63ef92a 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFBuiltinTableStyle.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFBuiltinTableStyle.java
@@ -416,7 +416,7 @@
                 styleMap.put(builtIn, new XSSFBuiltinTypeStyleStyle(builtIn, styles.getExplicitTableStyle(styleName)));
             }
         } catch (Exception e) {
-            throw new RuntimeException(e);
+            throw new IllegalStateException(e);
         }
     }
 
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFChartSheet.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFChartSheet.java
index bbd8c26..6f0b5e1 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFChartSheet.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFChartSheet.java
@@ -99,7 +99,7 @@
         try {
             new XSSFSheet().write(out);
         } catch (IOException e){
-            throw new RuntimeException(e);
+            throw new IllegalStateException(e);
         }
         return out.toByteArray();
     }
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
index 7a588ec..c649cd7 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
@@ -1918,13 +1918,13 @@
     @Override
     @NotImplemented
     public boolean isHidden() {
-        throw new RuntimeException("Not implemented yet");
+        throw new IllegalStateException("Not implemented yet");
     }
 
     @Override
     @NotImplemented
     public void setHidden(boolean hiddenFlag) {
-        throw new RuntimeException("Not implemented yet");
+        throw new IllegalStateException("Not implemented yet");
     }
 
     @Override
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
index 2b08c4e..d747e44 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
@@ -629,7 +629,7 @@
     public void setBorderTop(Borders border) {
         CTPBdr ct = getCTPBrd(true);
         if (ct == null) {
-            throw new RuntimeException("invalid paragraph state");
+            throw new IllegalStateException("invalid paragraph state");
         }
 
         CTBorder pr = (ct.isSetTop()) ? ct.getTop() : ct.addNewTop();
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTable.java b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTable.java
index 33548e7..82c08e2 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTable.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTable.java
@@ -1218,7 +1218,7 @@
      */
     protected static void setWidthValue(String widthValue, CTTblWidth ctWidth) {
         if (!widthValue.matches(REGEX_WIDTH_VALUE)) {
-            throw new RuntimeException("Table width value \"" + widthValue + "\" "
+            throw new IllegalStateException("Table width value \"" + widthValue + "\" "
                     + "must match regular expression \"" + REGEX_WIDTH_VALUE + "\".");
         }
         if (widthValue.matches("auto")) {
@@ -1250,7 +1250,7 @@
         } else if (widthValue.matches("[0-9]+")) {
             ctWidth.setW(new BigInteger(widthValue));
         } else {
-            throw new RuntimeException("setWidthPercentage(): Width value must be a percentage (\"33.3%\" or an integer, was \"" + widthValue + "\"");
+            throw new IllegalStateException("setWidthPercentage(): Width value must be a percentage (\"33.3%\" or an integer, was \"" + widthValue + "\"");
         }
     }
 
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusGDIImageRenderer.java b/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusGDIImageRenderer.java
index 2d8f3b0..dfa4685 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusGDIImageRenderer.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusGDIImageRenderer.java
@@ -103,7 +103,7 @@
                 bOffs = new int[]{2, 1, 0};
                 break;
             default:
-                throw new RuntimeException("not yet implemented");
+                throw new IllegalStateException("not yet implemented");
         }
 
         ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusObject.java b/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusObject.java
index 2553102..ebeb0f1 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusObject.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hemf/record/emfplus/HemfPlusObject.java
@@ -205,7 +205,7 @@
                 ) {
                     other.linkContinuedObject(objectData);
                 } else {
-                    throw new RuntimeException("can't find previous record for continued record");
+                    throw new IllegalStateException("can't find previous record for continued record");
                 }
             } else {
                 ctx.addPlusObjectTableEntry(this, getObjectId());
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hemf/usermodel/HemfEmbeddedIterator.java b/poi-scratchpad/src/main/java/org/apache/poi/hemf/usermodel/HemfEmbeddedIterator.java
index 0faf461..d6d2b53 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hemf/usermodel/HemfEmbeddedIterator.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hemf/usermodel/HemfEmbeddedIterator.java
@@ -299,7 +299,7 @@
             emb.setData(bos.toByteArray());
         } catch (IOException e) {
             // TODO: throw appropriate exception
-            throw new RuntimeException(e);
+            throw new IllegalStateException(e);
         }
     }
 
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hslf/model/textproperties/TextPropCollection.java b/poi-scratchpad/src/main/java/org/apache/poi/hslf/model/textproperties/TextPropCollection.java
index de90c60..814c82e 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hslf/model/textproperties/TextPropCollection.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hslf/model/textproperties/TextPropCollection.java
@@ -329,7 +329,7 @@
 
     public void setIndentLevel(short indentLevel) {
         if (textPropType == TextPropType.character) {
-            throw new RuntimeException("trying to set an indent on a character collection.");
+            throw new IllegalStateException("trying to set an indent on a character collection.");
         }
         this.indentLevel = indentLevel;
     }
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFObjectShape.java b/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFObjectShape.java
index 2111d53..4739ddb 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFObjectShape.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFObjectShape.java
@@ -241,7 +241,7 @@
     public OutputStream updateObjectData(final Application application, final ObjectMetaData metaData) {
         final ObjectMetaData md = (application != null) ? application.getMetaData() : metaData;
         if (md == null) {
-            throw new RuntimeException("either application or metaData needs to be set");
+            throw new IllegalStateException("either application or metaData needs to be set");
         }
 
         // can't use UnsynchronizedByteArrayOutputStream here, because it's final
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hsmf/MAPIMessage.java b/poi-scratchpad/src/main/java/org/apache/poi/hsmf/MAPIMessage.java
index 643463e..52a0a96 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hsmf/MAPIMessage.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hsmf/MAPIMessage.java
@@ -278,7 +278,7 @@
             );
             return rtf.getDataString();
         } catch (IOException e) {
-            throw new RuntimeException("Shouldn't happen", e);
+            throw new IllegalStateException("Shouldn't happen", e);
         }
     }
 
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfMisc.java b/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfMisc.java
index dc30761..da66935 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfMisc.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfMisc.java
@@ -528,7 +528,7 @@
             case BS_DIBPATTERN8X8:
             case BS_MONOPATTERN:
             case BS_PATTERN8X8:
-                throw new RuntimeException("pattern not supported");
+                throw new IllegalStateException("pattern not supported");
             }
             return size;
         }
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfTernaryRasterOp.java b/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfTernaryRasterOp.java
index b9d9f7e..dd5c7e0 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfTernaryRasterOp.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hwmf/record/HwmfTernaryRasterOp.java
@@ -429,7 +429,7 @@
                     stack[stackPnt++] = "all black";
                     break;
                 default:
-                    throw new RuntimeException("unknown cmd '"+c+"'.");
+                    throw new IllegalStateException("unknown cmd '"+c+"'.");
             }
         }
 
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hwmf/usermodel/HwmfPicture.java b/poi-scratchpad/src/main/java/org/apache/poi/hwmf/usermodel/HwmfPicture.java
index 0ac072d..7098f28 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hwmf/usermodel/HwmfPicture.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hwmf/usermodel/HwmfPicture.java
@@ -208,7 +208,7 @@
         if (inner != null) {
             return inner;
         }
-        throw new RuntimeException("invalid wmf file - window records are incomplete.");
+        throw new IllegalStateException("invalid wmf file - window records are incomplete.");
     }
 
     /**
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hwpf/dev/HWPFLister.java b/poi-scratchpad/src/main/java/org/apache/poi/hwpf/dev/HWPFLister.java
index 55657f7..52ae97a 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hwpf/dev/HWPFLister.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hwpf/dev/HWPFLister.java
@@ -263,7 +263,7 @@
             }
         }
         catch ( IOException e ) {
-            throw new RuntimeException( e );
+            throw new IllegalStateException( e );
         }
     }
 
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hwpf/extractor/WordExtractor.java b/poi-scratchpad/src/main/java/org/apache/poi/hwpf/extractor/WordExtractor.java
index 9c8dc8b..880c4e2 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hwpf/extractor/WordExtractor.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hwpf/extractor/WordExtractor.java
@@ -259,7 +259,7 @@
         } catch (RuntimeException e) {
             throw e;
         } catch ( Exception exc ) {
-            throw new RuntimeException( exc );
+            throw new IllegalStateException( exc );
         }
     }
 
diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hwpf/sprm/SprmUtils.java b/poi-scratchpad/src/main/java/org/apache/poi/hwpf/sprm/SprmUtils.java
index 2c30f29..bf3fd50 100644
--- a/poi-scratchpad/src/main/java/org/apache/poi/hwpf/sprm/SprmUtils.java
+++ b/poi-scratchpad/src/main/java/org/apache/poi/hwpf/sprm/SprmUtils.java
@@ -116,7 +116,7 @@
                 break;
             default:
                 //should never happen
-                throw new RuntimeException("Invalid sprm type");
+                throw new IllegalStateException("Invalid sprm type");
         }
         LittleEndian.putShort(sprm, 0, instruction);
         list.add(sprm);