NUMBERS-6: Remove specialized exception from public API (contd).
FractionParseException becomes package private and inherits from java.text.ParseException.
diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFractionFormat.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFractionFormat.java
index aca674c..822e6a2 100644
--- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFractionFormat.java
+++ b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFractionFormat.java
@@ -21,6 +21,7 @@
 import java.math.BigInteger;
 import java.text.FieldPosition;
 import java.text.NumberFormat;
+import java.text.ParseException;
 import java.text.ParsePosition;
 import java.util.Locale;
 
@@ -177,11 +178,11 @@
      * Parses a string to produce a {@link BigFraction} object.
      * @param source the string to parse
      * @return the parsed {@link BigFraction} object.
-     * @exception FractionParseException if the beginning of the specified string
+     * @exception ParseException if the beginning of the specified string
      *            cannot be parsed.
      */
     @Override
-    public BigFraction parse(final String source) throws FractionParseException {
+    public BigFraction parse(final String source) throws ParseException {
         final ParsePosition parsePosition = new ParsePosition(0);
         final BigFraction result = parse(source, parsePosition);
         if (parsePosition.getIndex() == 0) {
diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java
index 31abd17..bfd7734 100644
--- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java
+++ b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java
@@ -257,7 +257,7 @@
         if (den < 0) {
             if (num == Integer.MIN_VALUE ||
                 den == Integer.MIN_VALUE) {
-                throw new FractionException("overflow in fraction {0}/{1}, cannot negate", num, den);
+                throw new FractionException(FractionException.ERROR_NEGATION_OVERFLOW, num, den);
             }
             num = -num;
             den = -den;
@@ -617,7 +617,7 @@
         if (denominator < 0) {
             if (numerator==Integer.MIN_VALUE ||
                     denominator==Integer.MIN_VALUE) {
-                throw new FractionException("overflow in fraction {0}/{1}, cannot negate", numerator, denominator);
+                throw new FractionException(FractionException.ERROR_NEGATION_OVERFLOW, numerator, denominator);
             }
             numerator = -numerator;
             denominator = -denominator;
diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionException.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionException.java
index d5fb6df..c2283ad 100644
--- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionException.java
+++ b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionException.java
@@ -16,8 +16,10 @@
  */
 package org.apache.commons.numbers.fraction;
 
+import java.text.MessageFormat;
+
 /**
- * Base class for all exceptions thrown in the module.
+ * Package private exception class with constants for frequently used messages.
  */
 class FractionException extends ArithmeticException {
 
@@ -34,9 +36,22 @@
     public FractionException() {
     }
 
+    /**
+     * Create an exception where the message is constructed by applying
+     * the {@code format()} method from {@code java.text.MessageFormat}.
+     *
+     * @param message  the exception message with replaceable parameters
+     * @param formatArguments the arguments for formatting the message
+     */
     public FractionException(String message, Object... formatArguments) {
         super(message);
         this.formatArguments = formatArguments;
     }
 
+    @Override
+    public String getMessage() {
+        return MessageFormat.format(super.getMessage(), formatArguments);
+    }
+
+
 }
diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionFormat.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionFormat.java
index be6c8a2..cc34cac 100644
--- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionFormat.java
+++ b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionFormat.java
@@ -19,6 +19,7 @@
 
 import java.text.FieldPosition;
 import java.text.NumberFormat;
+import java.text.ParseException;
 import java.text.ParsePosition;
 import java.util.Locale;
 
@@ -183,11 +184,11 @@
      * Parses a string to produce a {@link Fraction} object.
      * @param source the string to parse
      * @return the parsed {@link Fraction} object.
-     * @exception FractionParseException if the beginning of the specified string
+     * @exception ParseException if the beginning of the specified string
      *            cannot be parsed.
      */
     @Override
-    public Fraction parse(final String source) throws FractionParseException {
+    public Fraction parse(final String source) throws ParseException {
         final ParsePosition parsePosition = new ParsePosition(0);
         final Fraction result = parse(source, parsePosition);
         if (parsePosition.getIndex() == 0) {
diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionParseException.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionParseException.java
index e48441d..815a57d 100644
--- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionParseException.java
+++ b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionParseException.java
@@ -23,7 +23,7 @@
 /**
  * Error thrown when a string cannot be parsed into a fraction.
  */
-public class FractionParseException extends ParseException {
+class FractionParseException extends ParseException {
 
     /** Serializable version identifier. */
     private static final long serialVersionUID = 201701181879L;
diff --git a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionFormatTest.java b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionFormatTest.java
index b69663e..7998986 100644
--- a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionFormatTest.java
+++ b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionFormatTest.java
@@ -20,6 +20,7 @@
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.text.NumberFormat;
+import java.text.ParseException;
 import java.util.Locale;
 
 import org.junit.Assert;
@@ -141,13 +142,13 @@
         try {
             properFormat.parse(source);
             Assert.fail(msg);
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // success
         }
         try {
             improperFormat.parse(source);
             Assert.fail(msg);
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // success
         }
     }
@@ -159,13 +160,13 @@
         try {
             properFormat.parse(source);
             Assert.fail(msg);
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // success
         }
         try {
             improperFormat.parse(source);
             Assert.fail(msg);
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // success
         }
     }
@@ -212,7 +213,7 @@
         try {
             improperFormat.parse(source);
             Assert.fail("invalid improper fraction.");
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // success
         }
     }
@@ -230,7 +231,7 @@
         try {
             improperFormat.parse(source);
             Assert.fail("invalid improper fraction.");
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // success
         }
     }
@@ -241,14 +242,14 @@
         try {
             properFormat.parse(source);
             Assert.fail("invalid minus in improper fraction.");
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // expected
         }
         source = "2 2 / -3";
         try {
             properFormat.parse(source);
             Assert.fail("invalid minus in improper fraction.");
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // expected
         }
     }
diff --git a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/FractionFormatTest.java b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/FractionFormatTest.java
index af1f462..1cb3d6d 100644
--- a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/FractionFormatTest.java
+++ b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/FractionFormatTest.java
@@ -18,6 +18,7 @@
 package org.apache.commons.numbers.fraction;
 
 import java.text.NumberFormat;
+import java.text.ParseException;
 import java.util.Locale;
 
 import org.junit.Assert;
@@ -112,7 +113,7 @@
             Assert.assertNotNull(c);
             Assert.assertEquals(1, c.getNumerator());
             Assert.assertEquals(2, c.getDenominator());
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             Assert.fail(ex.getMessage());
         }
     }
@@ -179,13 +180,13 @@
         try {
             properFormat.parse(source);
             Assert.fail(msg);
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // success
         }
         try {
             improperFormat.parse(source);
             Assert.fail(msg);
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // success
         }
     }
@@ -197,13 +198,13 @@
         try {
             properFormat.parse(source);
             Assert.fail(msg);
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // success
         }
         try {
             improperFormat.parse(source);
             Assert.fail(msg);
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // success
         }
     }
@@ -250,7 +251,7 @@
         try {
             improperFormat.parse(source);
             Assert.fail("invalid improper fraction.");
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // success
         }
     }
@@ -268,7 +269,7 @@
         try {
             improperFormat.parse(source);
             Assert.fail("invalid improper fraction.");
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // success
         }
     }
@@ -279,14 +280,14 @@
         try {
             properFormat.parse(source);
             Assert.fail("invalid minus in improper fraction.");
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // expected
         }
         source = "2 2 / -3";
         try {
             properFormat.parse(source);
             Assert.fail("invalid minus in improper fraction.");
-        } catch (FractionParseException ex) {
+        } catch (ParseException ex) {
             // expected
         }
     }