diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/CanberraDistance.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/CanberraDistance.java
index 0db6028..8f9295b 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/CanberraDistance.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/CanberraDistance.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.math4.legacy.ml.distance;
 
-import org.apache.commons.math4.legacy.exception.DimensionMismatchException;
 import org.apache.commons.math4.core.jdkmath.JdkMath;
 import org.apache.commons.math4.legacy.core.MathArrays;
 
@@ -28,8 +27,7 @@
 public class CanberraDistance implements DistanceMeasure {
     /** {@inheritDoc} */
     @Override
-    public double compute(double[] a, double[] b)
-    throws DimensionMismatchException {
+    public double compute(double[] a, double[] b) {
         MathArrays.checkEqualLength(a, b);
         double sum = 0;
         for (int i = 0; i < a.length; i++) {
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/ChebyshevDistance.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/ChebyshevDistance.java
index 2f042c0..5819649 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/ChebyshevDistance.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/ChebyshevDistance.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.math4.legacy.ml.distance;
 
-import org.apache.commons.math4.legacy.exception.DimensionMismatchException;
 import org.apache.commons.math4.legacy.core.MathArrays;
 
 /**
@@ -27,8 +26,7 @@
 public class ChebyshevDistance implements DistanceMeasure {
     /** {@inheritDoc} */
     @Override
-    public double compute(double[] a, double[] b)
-    throws DimensionMismatchException {
+    public double compute(double[] a, double[] b) {
         return MathArrays.distanceInf(a, b);
     }
 }
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/DistanceMeasure.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/DistanceMeasure.java
index a5a22f1..eea0d52 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/DistanceMeasure.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/DistanceMeasure.java
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.math4.legacy.ml.distance;
 
-import org.apache.commons.math4.legacy.exception.DimensionMismatchException;
-
 /**
  * Interface for distance measures of n-dimensional vectors.
  *
@@ -33,7 +31,8 @@
      * @param a the first vector
      * @param b the second vector
      * @return the distance between the two vectors
-     * @throws DimensionMismatchException if the array lengths differ.
+     * @throws org.apache.commons.math4.legacy.exception.DimensionMismatchException
+     * if the array lengths differ.
      */
-    double compute(double[] a, double[] b) throws DimensionMismatchException;
+    double compute(double[] a, double[] b);
 }
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/EarthMoversDistance.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/EarthMoversDistance.java
index 3fedb22..052ade3 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/EarthMoversDistance.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/EarthMoversDistance.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.math4.legacy.ml.distance;
 
-import org.apache.commons.math4.legacy.exception.DimensionMismatchException;
 import org.apache.commons.math4.core.jdkmath.JdkMath;
 import org.apache.commons.math4.legacy.core.MathArrays;
 
@@ -30,8 +29,7 @@
 public class EarthMoversDistance implements DistanceMeasure {
     /** {@inheritDoc} */
     @Override
-    public double compute(double[] a, double[] b)
-    throws DimensionMismatchException {
+    public double compute(double[] a, double[] b) {
         MathArrays.checkEqualLength(a, b);
         double lastDistance = 0;
         double totalDistance = 0;
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/EuclideanDistance.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/EuclideanDistance.java
index 1aa0fe7..3748ab9 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/EuclideanDistance.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/EuclideanDistance.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.math4.legacy.ml.distance;
 
-import org.apache.commons.math4.legacy.exception.DimensionMismatchException;
 import org.apache.commons.math4.legacy.core.MathArrays;
 
 /**
@@ -27,8 +26,7 @@
 public class EuclideanDistance implements DistanceMeasure {
     /** {@inheritDoc} */
     @Override
-    public double compute(double[] a, double[] b)
-    throws DimensionMismatchException {
+    public double compute(double[] a, double[] b) {
         return MathArrays.distance(a, b);
     }
 }
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/ManhattanDistance.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/ManhattanDistance.java
index d9813a7..3337ee2 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/ManhattanDistance.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ml/distance/ManhattanDistance.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.math4.legacy.ml.distance;
 
-import org.apache.commons.math4.legacy.exception.DimensionMismatchException;
 import org.apache.commons.math4.legacy.core.MathArrays;
 
 /**
@@ -27,8 +26,7 @@
 public class ManhattanDistance implements DistanceMeasure {
     /** {@inheritDoc} */
     @Override
-    public double compute(double[] a, double[] b)
-    throws DimensionMismatchException {
+    public double compute(double[] a, double[] b) {
         return MathArrays.distance1(a, b);
     }
 }
