Author: fanningpj
Date: Tue Feb 14 14:26:56 2023
New Revision: 1907651

URL: http://svn.apache.org/viewvc?rev=1907651&view=rev
Log:
fix up use of ExceptionUtil in main poi module

Added:
    poi/trunk/poi/src/test/java/org/apache/poi/util/ExceptionUtilTest.java   
(with props)
Modified:
    poi/trunk/poi/src/main/java/org/apache/poi/POIDocument.java
    poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Property.java
    poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Section.java
    
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
    poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
    poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/CryptoFunctions.java
    poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/EncryptionInfo.java
    
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/agile/AgileEncryptionHeader.java
    
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor.java
    
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDocumentOutputStream.java
    poi/trunk/poi/src/main/java/org/apache/poi/poifs/nio/CleanerUtil.java
    poi/trunk/poi/src/main/java/org/apache/poi/sl/draw/DrawPictureShape.java
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/EvaluationConditionalFormatRule.java
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/SheetNameFormatter.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/WorkbookEvaluator.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/Switch.java
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XLookupFunction.java
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XMatchFunction.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Areas.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Correl.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Covar.java
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/DStarRunner.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Days.java
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Forecast.java
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/NumberValueFunction.java
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/TimeValue.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/WeekNum.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/util/SheetUtil.java
    poi/trunk/poi/src/main/java/org/apache/poi/util/Configurator.java

Modified: poi/trunk/poi/src/main/java/org/apache/poi/POIDocument.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/POIDocument.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/POIDocument.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/POIDocument.java Tue Feb 14 
14:26:56 2023
@@ -45,6 +45,7 @@ import org.apache.poi.poifs.crypt.crypto
 import org.apache.poi.poifs.filesystem.DirectoryNode;
 import org.apache.poi.poifs.filesystem.DocumentInputStream;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.Internal;
 
@@ -245,6 +246,9 @@ public abstract class POIDocument implem
         } catch (IOException e) {
             throw e;
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             throw new IOException("Error "+step+" property set with name " + 
setName, e);
         } finally {
             IOUtils.closeQuietly(encPoifs);

Modified: poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Property.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Property.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Property.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Property.java Tue Feb 14 
14:26:56 2023
@@ -35,6 +35,7 @@ import org.apache.logging.log4j.LogManag
 import org.apache.logging.log4j.Logger;
 import org.apache.poi.hpsf.wellknown.PropertyIDMap;
 import org.apache.poi.util.CodePageUtil;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 import org.apache.poi.util.LittleEndianByteArrayInputStream;
@@ -403,6 +404,9 @@ public class Property {
             try {
                 write(bos, codepage);
             } catch (Exception e) {
+                if (ExceptionUtil.isFatal(e)) {
+                    ExceptionUtil.rethrow(e);
+                }
                 LOG.atWarn().withThrowable(e).log("can't serialize string");
             }
 
@@ -475,6 +479,9 @@ public class Property {
                     return 
LocaleUtil.getLocaleFromLCID(((Number)value).intValue());
             }
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             LOG.atWarn().log("Can't decode id {}", box(getID()));
         }
         return null;

Modified: poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Section.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Section.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Section.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Section.java Tue Feb 14 
14:26:56 2023
@@ -35,6 +35,7 @@ import org.apache.logging.log4j.LogManag
 import org.apache.logging.log4j.Logger;
 import org.apache.poi.hpsf.wellknown.PropertyIDMap;
 import org.apache.poi.util.CodePageUtil;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.LittleEndian;
 import org.apache.poi.util.LittleEndianByteArrayInputStream;
@@ -547,6 +548,9 @@ public class Section {
         } catch (HPSFRuntimeException ex) {
             throw ex;
         } catch (Exception ex) {
+            if (ExceptionUtil.isFatal(ex)) {
+                ExceptionUtil.rethrow(ex);
+            }
             throw new HPSFRuntimeException(ex);
         }
     }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
 (original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
 Tue Feb 14 14:26:56 2023
@@ -25,6 +25,7 @@ import org.apache.poi.hssf.usermodel.HSS
 import org.apache.poi.poifs.crypt.ChunkedCipherInputStream;
 import org.apache.poi.poifs.crypt.Decryptor;
 import org.apache.poi.poifs.crypt.EncryptionInfo;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.Internal;
 import org.apache.poi.util.LittleEndian;
@@ -61,6 +62,9 @@ public final class Biff8DecryptingStream
                 ccis.readFully(initialBuf);
             }
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             throw new RecordFormatException(e);
         }
     }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java 
Tue Feb 14 14:26:56 2023
@@ -105,6 +105,7 @@ import org.apache.poi.ss.usermodel.Workb
 import org.apache.poi.ss.util.CellReference;
 import org.apache.poi.ss.util.WorkbookUtil;
 import org.apache.poi.util.Configurator;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.HexDump;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.Internal;
@@ -1584,6 +1585,9 @@ public final class HSSFWorkbook extends
             }
             os.close();
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             throw new EncryptedDocumentException(e);
         }
     }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/CryptoFunctions.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/CryptoFunctions.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/CryptoFunctions.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/CryptoFunctions.java 
Tue Feb 14 14:26:56 2023
@@ -34,6 +34,7 @@ import javax.crypto.spec.IvParameterSpec
 import javax.crypto.spec.RC2ParameterSpec;
 
 import org.apache.poi.EncryptedDocumentException;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.Internal;
 import org.apache.poi.util.LittleEndian;
@@ -346,6 +347,9 @@ public final class CryptoFunctions {
             Class<Provider> clazz = 
(Class<Provider>)cl.loadClass(bcProviderName);
             Security.addProvider(clazz.getDeclaredConstructor().newInstance());
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             throw new EncryptedDocumentException("Only the BouncyCastle 
provider supports your encryption settings - please add it to the classpath.", 
e);
         }
     }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/EncryptionInfo.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/EncryptionInfo.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/EncryptionInfo.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/EncryptionInfo.java 
Tue Feb 14 14:26:56 2023
@@ -35,6 +35,7 @@ import org.apache.poi.poifs.filesystem.D
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.LittleEndianInput;
 
 /**
@@ -141,6 +142,9 @@ public class EncryptionInfo implements G
         try {
             eib = getBuilder(encryptionMode);
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             throw new IOException(e);
         }
 
@@ -187,6 +191,9 @@ public class EncryptionInfo implements G
         try {
             eib = getBuilder(encryptionMode);
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             throw new EncryptedDocumentException(e);
         }
 

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/agile/AgileEncryptionHeader.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/agile/AgileEncryptionHeader.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/agile/AgileEncryptionHeader.java
 (original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/agile/AgileEncryptionHeader.java
 Tue Feb 14 14:26:56 2023
@@ -24,6 +24,7 @@ import org.apache.poi.poifs.crypt.Chaini
 import org.apache.poi.poifs.crypt.CipherAlgorithm;
 import org.apache.poi.poifs.crypt.EncryptionHeader;
 import org.apache.poi.poifs.crypt.HashAlgorithm;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.GenericRecordUtil;
 
 public class AgileEncryptionHeader extends EncryptionHeader {
@@ -48,6 +49,9 @@ public class AgileEncryptionHeader exten
                 throw new NullPointerException("keyData not set");
             }
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             throw new EncryptedDocumentException("Unable to parse keyData");
         }
 

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor.java
 (original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor.java
 Tue Feb 14 14:26:56 2023
@@ -42,6 +42,7 @@ import org.apache.poi.poifs.filesystem.D
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.LittleEndian;
 import org.apache.poi.util.LittleEndianInputStream;
@@ -212,6 +213,8 @@ public class CryptoAPIDecryptor extends
                 throw (GeneralSecurityException)e;
             } else if (e instanceof IOException) {
                 throw (IOException)e;
+            } else if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
             } else {
                 throw new IOException("summary entries can't be read", e);
             }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDocumentOutputStream.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDocumentOutputStream.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDocumentOutputStream.java
 (original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDocumentOutputStream.java
 Tue Feb 14 14:26:56 2023
@@ -24,6 +24,7 @@ import javax.crypto.Cipher;
 import org.apache.commons.io.input.BoundedInputStream;
 import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.apache.poi.EncryptedDocumentException;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.Internal;
 
 /**
@@ -59,6 +60,9 @@ import org.apache.poi.util.Internal;
             cipher.update(oneByte, 0, 1, oneByte, 0);
             super.write(oneByte);
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             throw new EncryptedDocumentException(e);
         }
     }
@@ -69,6 +73,9 @@ import org.apache.poi.util.Internal;
             cipher.update(b, off, len, b, off);
             super.write(b, off, len);
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             throw new EncryptedDocumentException(e);
         }
     }

Modified: poi/trunk/poi/src/main/java/org/apache/poi/poifs/nio/CleanerUtil.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/nio/CleanerUtil.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/poifs/nio/CleanerUtil.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/poifs/nio/CleanerUtil.java Tue 
Feb 14 14:26:56 2023
@@ -180,14 +180,17 @@ public final class CleanerUtil {
                     (PrivilegedAction<Throwable>) () -> {
                         try {
                             unmapper.invokeExact(buffer);
-                            return null;
                         } catch (Throwable t) {
                             if (ExceptionUtil.isFatal(t)) {
                                 ExceptionUtil.rethrow(t);
                             }
                         }
+                        return null;
                     });
             if (error != null) {
+                if (ExceptionUtil.isFatal(error)) {
+                    ExceptionUtil.rethrow(error);
+                }
                 throw new IOException("Unable to unmap the mapped buffer", 
error);
             }
         };

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/sl/draw/DrawPictureShape.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/sl/draw/DrawPictureShape.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/sl/draw/DrawPictureShape.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/sl/draw/DrawPictureShape.java 
Tue Feb 14 14:26:56 2023
@@ -35,6 +35,7 @@ import org.apache.poi.poifs.filesystem.F
 import org.apache.poi.sl.usermodel.PictureData;
 import org.apache.poi.sl.usermodel.PictureShape;
 import org.apache.poi.sl.usermodel.RectAlign;
+import org.apache.poi.util.ExceptionUtil;
 
 
 public class DrawPictureShape extends DrawSimpleShape {
@@ -103,7 +104,10 @@ public class DrawPictureShape extends Dr
                 }
             } catch (NoSuchElementException ignored) {
                 break;
-            } catch (Exception | ServiceConfigurationError ignored) {
+            } catch (Exception | ServiceConfigurationError e) {
+                if (ExceptionUtil.isFatal(e)) {
+                    ExceptionUtil.rethrow(e);
+                }
             }
         }
 

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java 
(original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java 
Tue Feb 14 14:26:56 2023
@@ -47,6 +47,7 @@ import org.apache.poi.ss.usermodel.Shape
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.util.Beta;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.LocaleUtil;
 
@@ -132,6 +133,9 @@ public class EmbeddedExtractor implement
                         data = new EmbeddedData(od.getFileName(), 
od.getObjectData(), od.getContentType());
                     }
                 } catch (Exception e) {
+                    if (ExceptionUtil.isFatal(e)) {
+                        ExceptionUtil.rethrow(e);
+                    }
                     LOG.atWarn().withThrowable(e).log("Entry not found / 
readable - ignoring OLE embedding");
                 }
             } else if (shape instanceof Picture) {

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/EvaluationConditionalFormatRule.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/EvaluationConditionalFormatRule.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/EvaluationConditionalFormatRule.java
 (original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/EvaluationConditionalFormatRule.java
 Tue Feb 14 14:26:56 2023
@@ -51,6 +51,7 @@ import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.LocaleUtil;
 import org.apache.poi.util.StringUtil;
 
@@ -509,6 +510,9 @@ public class EvaluationConditionalFormat
                 // see TextFunction.TRIM for implementation
                 return StringUtil.isBlank(v);
             } catch (Exception e) {
+                if (ExceptionUtil.isFatal(e)) {
+                    ExceptionUtil.rethrow(e);
+                }
                 // not a valid string value, and not a blank cell (that's 
checked earlier)
                 return false;
             }
@@ -518,6 +522,9 @@ public class EvaluationConditionalFormat
                 // see TextFunction.TRIM for implementation
                 return StringUtil.isNotBlank(v);
             } catch (Exception e) {
+                if (ExceptionUtil.isFatal(e)) {
+                    ExceptionUtil.rethrow(e);
+                }
                 // not a valid string value, but not blank
                 return true;
             }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
 (original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
 Tue Feb 14 14:26:56 2023
@@ -42,6 +42,7 @@ import org.apache.poi.ss.formula.ptg.Ref
 import org.apache.poi.ss.formula.ptg.Ref3DPxg;
 import org.apache.poi.ss.util.CellReference;
 import org.apache.poi.ss.util.CellReference.NameType;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.LocaleUtil;
 
 /**
@@ -257,6 +258,9 @@ public final class OperationEvaluationCo
                             }
                             return new LazyAreaEval(0, absoluteC, 
ssVersion.getLastRowIndex(), absoluteC, sre);
                         } catch (Exception e) {
+                            if (ExceptionUtil.isFatal(e)) {
+                                ExceptionUtil.rethrow(e);
+                            }
                             return ErrorEval.REF_INVALID;
                         }
                     }
@@ -279,6 +283,9 @@ public final class OperationEvaluationCo
                             }
                             return new LazyAreaEval(absoluteR, 0, absoluteR, 
ssVersion.getLastColumnIndex(), sre);
                         } catch (Exception e) {
+                            if (ExceptionUtil.isFatal(e)) {
+                                ExceptionUtil.rethrow(e);
+                            }
                             return ErrorEval.REF_INVALID;
                         }
                     }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/SheetNameFormatter.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/SheetNameFormatter.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/SheetNameFormatter.java 
(original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/SheetNameFormatter.java 
Tue Feb 14 14:26:56 2023
@@ -23,6 +23,7 @@ import java.util.regex.Pattern;
 
 import org.apache.poi.ss.util.CellReference;
 import org.apache.poi.ss.SpreadsheetVersion;
+import org.apache.poi.util.ExceptionUtil;
 
 /**
  * Formats sheet names for use in formula expressions.
@@ -68,6 +69,9 @@ public final class SheetNameFormatter {
                 appendAndEscape(out, rawSheetName);
             }
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             throw new IllegalStateException(e);
         }
     }
@@ -96,6 +100,9 @@ public final class SheetNameFormatter {
                 appendOrREF(out, rawSheetName);
             }
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             throw new IllegalStateException(e);
         }
     }
@@ -125,6 +132,9 @@ public final class SheetNameFormatter {
                 sb.append(ch);
             }
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             throw new IllegalStateException(e);
         }
     }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/WorkbookEvaluator.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/WorkbookEvaluator.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/WorkbookEvaluator.java 
(original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/WorkbookEvaluator.java 
Tue Feb 14 14:26:56 2023
@@ -40,6 +40,7 @@ import org.apache.poi.ss.formula.udf.UDF
 import org.apache.poi.ss.usermodel.CellType;
 import org.apache.poi.ss.util.CellRangeAddressBase;
 import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.Internal;
 
 import static org.apache.logging.log4j.util.Unbox.box;
@@ -332,6 +333,9 @@ public final class WorkbookEvaluator {
             String msg = "Error evaluating cell " + cr.formatAsString();
             return new NotImplementedException(msg, inner);
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             // avoid bombing out during exception handling
             LOG.atError().withThrowable(e).log("Can't add exception info");
             return inner; // preserve original exception

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/Switch.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/Switch.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/Switch.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/Switch.java Tue 
Feb 14 14:26:56 2023
@@ -24,6 +24,7 @@ import org.apache.poi.ss.formula.eval.Ev
 import org.apache.poi.ss.formula.eval.OperandResolver;
 import org.apache.poi.ss.formula.eval.ValueEval;
 import org.apache.poi.ss.formula.functions.FreeRefFunction;
+import org.apache.poi.util.ExceptionUtil;
 
 import static org.apache.poi.ss.formula.eval.RelationalOperationEval.EqualEval;
 
@@ -53,6 +54,9 @@ public final class Switch implements Fre
         try {
             expression = OperandResolver.getSingleValue(args[0], 
ec.getRowIndex(), ec.getColumnIndex());
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             return ErrorEval.NA;
         }
 

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XLookupFunction.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XLookupFunction.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XLookupFunction.java 
(original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XLookupFunction.java 
Tue Feb 14 14:26:56 2023
@@ -23,6 +23,7 @@ import org.apache.poi.ss.formula.eval.*;
 import org.apache.poi.ss.formula.functions.ArrayFunction;
 import org.apache.poi.ss.formula.functions.FreeRefFunction;
 import org.apache.poi.ss.formula.functions.LookupUtils;
+import org.apache.poi.util.ExceptionUtil;
 
 /**
  * Implementation of Excel function XLOOKUP()
@@ -81,6 +82,9 @@ final class XLookupFunction implements F
             } catch (EvaluationException e) {
                 return e.getErrorEval();
             } catch (Exception e) {
+                if (ExceptionUtil.isFatal(e)) {
+                    ExceptionUtil.rethrow(e);
+                }
                 return ErrorEval.VALUE_INVALID;
             }
         }
@@ -93,6 +97,9 @@ final class XLookupFunction implements F
             } catch (EvaluationException e) {
                 return e.getErrorEval();
             } catch (Exception e) {
+                if (ExceptionUtil.isFatal(e)) {
+                    ExceptionUtil.rethrow(e);
+                }
                 return ErrorEval.VALUE_INVALID;
             }
         }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XMatchFunction.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XMatchFunction.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XMatchFunction.java 
(original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/XMatchFunction.java 
Tue Feb 14 14:26:56 2023
@@ -22,6 +22,7 @@ import org.apache.poi.ss.formula.TwoDEva
 import org.apache.poi.ss.formula.eval.*;
 import org.apache.poi.ss.formula.functions.FreeRefFunction;
 import org.apache.poi.ss.formula.functions.LookupUtils;
+import org.apache.poi.util.ExceptionUtil;
 
 /**
  * Implementation of Excel function XMATCH()
@@ -64,6 +65,9 @@ final class XMatchFunction implements Fr
             } catch (EvaluationException e) {
                 return e.getErrorEval();
             } catch (Exception e) {
+                if (ExceptionUtil.isFatal(e)) {
+                    ExceptionUtil.rethrow(e);
+                }
                 return ErrorEval.VALUE_INVALID;
             }
         }
@@ -76,6 +80,9 @@ final class XMatchFunction implements Fr
             } catch (EvaluationException e) {
                 return e.getErrorEval();
             } catch (Exception e) {
+                if (ExceptionUtil.isFatal(e)) {
+                    ExceptionUtil.rethrow(e);
+                }
                 return ErrorEval.VALUE_INVALID;
             }
         }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Areas.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Areas.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Areas.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Areas.java 
Tue Feb 14 14:26:56 2023
@@ -22,6 +22,7 @@ import org.apache.poi.ss.formula.eval.Nu
 import org.apache.poi.ss.formula.eval.RefListEval;
 import org.apache.poi.ss.formula.eval.ValueEval;
 import org.apache.poi.ss.formula.ptg.NumberPtg;
+import org.apache.poi.util.ExceptionUtil;
 
 /**
  * Returns the number of areas in a reference. An area is a range of 
contiguous cells or a single cell.
@@ -42,6 +43,9 @@ public final class Areas implements Func
             }
             return new NumberEval(new NumberPtg(result));
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             return ErrorEval.VALUE_INVALID;
         }
 

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Correl.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Correl.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Correl.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Correl.java 
Tue Feb 14 14:26:56 2023
@@ -21,6 +21,7 @@ import org.apache.poi.ss.formula.eval.Er
 import org.apache.poi.ss.formula.eval.EvaluationException;
 import org.apache.poi.ss.formula.eval.NumberEval;
 import org.apache.poi.ss.formula.eval.ValueEval;
+import org.apache.poi.util.ExceptionUtil;
 
 import java.util.List;
 
@@ -57,6 +58,9 @@ public class Correl extends Fixed2ArgFun
         } catch (EvaluationException e) {
             return e.getErrorEval();
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             return ErrorEval.NA;
         }
     }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Covar.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Covar.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Covar.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Covar.java 
Tue Feb 14 14:26:56 2023
@@ -22,6 +22,7 @@ import org.apache.poi.ss.formula.eval.Er
 import org.apache.poi.ss.formula.eval.EvaluationException;
 import org.apache.poi.ss.formula.eval.NumberEval;
 import org.apache.poi.ss.formula.eval.ValueEval;
+import org.apache.poi.util.ExceptionUtil;
 
 import java.util.List;
 
@@ -57,6 +58,9 @@ public class Covar extends Fixed2ArgFunc
         } catch (EvaluationException e) {
             return e.getErrorEval();
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             return ErrorEval.NA;
         }
     }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/DStarRunner.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/DStarRunner.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/DStarRunner.java
 (original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/DStarRunner.java
 Tue Feb 14 14:26:56 2023
@@ -32,6 +32,7 @@ import org.apache.poi.ss.formula.eval.St
 import org.apache.poi.ss.formula.eval.StringValueEval;
 import org.apache.poi.ss.formula.eval.ValueEval;
 import org.apache.poi.ss.util.NumberComparer;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.Internal;
 import org.apache.poi.util.LocaleUtil;
 
@@ -136,6 +137,9 @@ public final class DStarRunner implement
                 return e.getErrorEval();
             }
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             if (!algorithm.allowEmptyMatchField()) {
                 return ErrorEval.VALUE_INVALID;
             }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Days.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Days.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Days.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Days.java 
Tue Feb 14 14:26:56 2023
@@ -28,6 +28,7 @@ import org.apache.poi.ss.formula.eval.Op
 import org.apache.poi.ss.formula.eval.ValueEval;
 import org.apache.poi.ss.usermodel.DateUtil;
 import org.apache.poi.ss.util.DateParser;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.LocaleUtil;
 
 /**
@@ -82,6 +83,9 @@ public class Days implements FreeRefFunc
             double d0 = NumericFunction.singleOperandEvaluate(ve, srcRowIndex, 
srcColumnIndex);
             return getDate(d0);
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             String strText1 = OperandResolver.coerceValueToString(ve);
             return DateParser.parseLocalDate(strText1);
         }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Forecast.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Forecast.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Forecast.java 
(original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Forecast.java 
Tue Feb 14 14:26:56 2023
@@ -22,6 +22,7 @@ import org.apache.poi.ss.formula.eval.Ev
 import org.apache.poi.ss.formula.eval.NumberEval;
 import org.apache.poi.ss.formula.eval.OperandResolver;
 import org.apache.poi.ss.formula.eval.ValueEval;
+import org.apache.poi.util.ExceptionUtil;
 
 import java.util.List;
 
@@ -73,6 +74,9 @@ public class Forecast extends Fixed3ArgF
         } catch (EvaluationException e) {
             return e.getErrorEval();
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             return ErrorEval.NA;
         }
     }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java 
(original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java 
Tue Feb 14 14:26:56 2023
@@ -31,6 +31,7 @@ import org.apache.poi.ss.formula.eval.Op
 import org.apache.poi.ss.formula.eval.ValueEval;
 import org.apache.poi.ss.formula.ptg.Area3DPxg;
 import org.apache.poi.ss.usermodel.Table;
+import org.apache.poi.util.ExceptionUtil;
 
 /**
  * Implementation for Excel function INDIRECT<p>
@@ -142,6 +143,9 @@ public final class Indirect implements F
             try {
                 return ec.getDynamicReference(workbookName, sheetName, 
refStrPart1, refStrPart2, isA1style);
             } catch (Exception e) {
+                if (ExceptionUtil.isFatal(e)) {
+                    ExceptionUtil.rethrow(e);
+                }
                 LOGGER.atWarn().log("Indirect function: failed to parse 
reference {}", text, e);
                 return ErrorEval.REF_INVALID;
             }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/NumberValueFunction.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/NumberValueFunction.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/NumberValueFunction.java
 (original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/NumberValueFunction.java
 Tue Feb 14 14:26:56 2023
@@ -25,6 +25,7 @@ import org.apache.poi.ss.formula.eval.Nu
 import org.apache.poi.ss.formula.eval.ErrorEval;
 import org.apache.poi.ss.formula.eval.EvaluationException;
 import org.apache.poi.ss.formula.eval.OperandResolver;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.LocaleUtil;
 
 /**
@@ -111,6 +112,9 @@ public final class NumberValueFunction i
         } catch (EvaluationException e) {
             return e.getErrorEval();
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             return ErrorEval.VALUE_INVALID; //If any of the arguments are not 
valid, NUMBERVALUE returns the #VALUE! error value.
         }
 

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/TimeValue.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/TimeValue.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/TimeValue.java 
(original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/TimeValue.java 
Tue Feb 14 14:26:56 2023
@@ -22,6 +22,7 @@ import org.apache.logging.log4j.Logger;
 import org.apache.poi.ss.formula.eval.*;
 import org.apache.poi.ss.usermodel.DateUtil;
 import org.apache.poi.ss.util.DateParser;
+import org.apache.poi.util.ExceptionUtil;
 
 import java.time.DateTimeException;
 import java.time.LocalDate;
@@ -60,11 +61,17 @@ public class TimeValue extends Fixed1Arg
             try {
                 return parseTimeFromDateTime(dateTimeText);
             } catch (Exception e) {
+                if (ExceptionUtil.isFatal(e)) {
+                    ExceptionUtil.rethrow(e);
+                }
                 try {
                     //this could be a time (with no date part) - prepend a 
dummy date because
                     //parseTimeFromDateTime needs it
                     return parseTimeFromDateTime("1/01/2000 " + dateTimeText);
                 } catch (Exception e2) {
+                    if (ExceptionUtil.isFatal(e2)) {
+                        ExceptionUtil.rethrow(e2);
+                    }
                     LocalDate ld = DateParser.parseLocalDate(dateTimeText);
                     //return 0 as this is a pure date with no time element
                     return new NumberEval(0);

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/WeekNum.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/WeekNum.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/WeekNum.java 
(original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/WeekNum.java 
Tue Feb 14 14:26:56 2023
@@ -33,6 +33,7 @@ import org.apache.poi.ss.formula.eval.Nu
 import org.apache.poi.ss.formula.eval.OperandResolver;
 import org.apache.poi.ss.formula.eval.ValueEval;
 import org.apache.poi.ss.usermodel.DateUtil;
+import org.apache.poi.util.ExceptionUtil;
 
 /**
  * Implementation for Excel WeekNum() function.
@@ -69,6 +70,9 @@ public class WeekNum extends Fixed2ArgFu
                     .atZone(ZoneId.systemDefault())
                     .toLocalDate();
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             return ErrorEval.NUM_ERROR;
         }
         int returnType;

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java 
Tue Feb 14 14:26:56 2023
@@ -47,6 +47,7 @@ import org.apache.poi.ss.format.CellForm
 import org.apache.poi.ss.formula.ConditionalFormattingEvaluator;
 import org.apache.poi.ss.util.DateFormatConverter;
 import org.apache.poi.ss.util.NumberToTextConverter;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.LocaleUtil;
 import org.apache.poi.util.StringUtil;
 
@@ -407,6 +408,9 @@ public class DataFormatter {
                 // Wrap and return (non-cacheable - CellFormat does that)
                 return new CellFormatResultWrapper( cfmt.apply(cellValueO) );
             } catch (Exception e) {
+                if (ExceptionUtil.isFatal(e)) {
+                    ExceptionUtil.rethrow(e);
+                }
                 LOG.atWarn().withThrowable(e).log("Formatting failed for 
format {}, falling back", formatStr);
             }
         }
@@ -1119,6 +1123,9 @@ public class DataFormatter {
                     try {
                         cellType = cell.getCachedFormulaResultType();
                     } catch (Exception e) {
+                        if (ExceptionUtil.isFatal(e)) {
+                            ExceptionUtil.rethrow(e);
+                        }
                         return cell.getCellFormula();
                     }
                 } else {

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/util/SheetUtil.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/util/SheetUtil.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/util/SheetUtil.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/util/SheetUtil.java Tue Feb 
14 14:26:56 2023
@@ -38,6 +38,7 @@ import org.apache.poi.ss.usermodel.RichT
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.util.ExceptionUtil;
 import org.apache.poi.util.Internal;
 
 
@@ -192,6 +193,9 @@ public class SheetUtil {
                 try {
                     sval = formatter.formatCellValue(cell, dummyEvaluator);
                 } catch (Exception e) {
+                    if (ExceptionUtil.isFatal(e)) {
+                        ExceptionUtil.rethrow(e);
+                    }
                     sval = String.valueOf(cell.getNumericCellValue());
                 }
             } else if (cellType == CellType.BOOLEAN) {

Modified: poi/trunk/poi/src/main/java/org/apache/poi/util/Configurator.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/util/Configurator.java?rev=1907651&r1=1907650&r2=1907651&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/util/Configurator.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/util/Configurator.java Tue Feb 
14 14:26:56 2023
@@ -34,6 +34,9 @@ public class Configurator {
         try {
             return Integer.parseInt(property);
         } catch (Exception e) {
+            if (ExceptionUtil.isFatal(e)) {
+                ExceptionUtil.rethrow(e);
+            }
             LOG.atError().log("System property -D{} does not contains a valid 
integer: {}", systemProperty, property);
             return defaultValue;
         }

Added: poi/trunk/poi/src/test/java/org/apache/poi/util/ExceptionUtilTest.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/util/ExceptionUtilTest.java?rev=1907651&view=auto
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/util/ExceptionUtilTest.java 
(added)
+++ poi/trunk/poi/src/test/java/org/apache/poi/util/ExceptionUtilTest.java Tue 
Feb 14 14:26:56 2023
@@ -0,0 +1,60 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+package org.apache.poi.util;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+class ExceptionUtilTest {
+    @Test
+    void testRuntimeException() {
+        assertFalse(ExceptionUtil.isFatal(new RuntimeException("runtime 
issue")));
+    }
+
+    @Test
+    void testPlainException() {
+        assertFalse(ExceptionUtil.isFatal(new Exception("plain issue")));
+    }
+
+    @Test
+    void testOutOfMemoryError() {
+        assertTrue(ExceptionUtil.isFatal(new OutOfMemoryError("oom")));
+    }
+
+    @Test
+    void testVirtualMachineError() {
+        assertTrue(ExceptionUtil.isFatal(new VirtualMachineError(){}));
+    }
+
+
+    @Test
+    void testThreadDeath() {
+        assertTrue(ExceptionUtil.isFatal(new ThreadDeath()));
+    }
+
+    @Test
+    void testInterruptedException() {
+        assertTrue(ExceptionUtil.isFatal(new InterruptedException()));
+    }
+
+    @Test
+    void testLinkageError() {
+        assertTrue(ExceptionUtil.isFatal(new LinkageError()));
+    }
+}

Propchange: 
poi/trunk/poi/src/test/java/org/apache/poi/util/ExceptionUtilTest.java
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to