diff --git a/lib/java/src/main/java/org/apache/thrift/transport/TEndpointTransport.java b/lib/java/src/main/java/org/apache/thrift/transport/TEndpointTransport.java
index 72bf953..6026390 100644
--- a/lib/java/src/main/java/org/apache/thrift/transport/TEndpointTransport.java
+++ b/lib/java/src/main/java/org/apache/thrift/transport/TEndpointTransport.java
@@ -65,7 +65,9 @@
 
     // update only: message size can shrink, but not grow
     if (newSize > knownMessageSize)
-      throw new TTransportException(TTransportException.END_OF_FILE, "MaxMessageSize reached");
+      throw new TTransportException(
+          TTransportException.MESSAGE_SIZE_LIMIT,
+          "Message size exceeds limit: " + getMaxMessageSize());
 
     knownMessageSize = newSize;
     remainingMessageSize = newSize;
@@ -91,7 +93,9 @@
    */
   public void checkReadBytesAvailable(long numBytes) throws TTransportException {
     if (remainingMessageSize < numBytes)
-      throw new TTransportException(TTransportException.END_OF_FILE, "MaxMessageSize reached");
+      throw new TTransportException(
+          TTransportException.MESSAGE_SIZE_LIMIT,
+          "Message size exceeds limit: " + getMaxMessageSize());
   }
 
   /**
@@ -104,7 +108,9 @@
       remainingMessageSize -= numBytes;
     } else {
       remainingMessageSize = 0;
-      throw new TTransportException(TTransportException.END_OF_FILE, "MaxMessageSize reached");
+      throw new TTransportException(
+          TTransportException.MESSAGE_SIZE_LIMIT,
+          "Message size exceeds limit: " + getMaxMessageSize());
     }
   }
 }
diff --git a/lib/java/src/main/java/org/apache/thrift/transport/TTransportException.java b/lib/java/src/main/java/org/apache/thrift/transport/TTransportException.java
index cc7532f..a7ebed6 100644
--- a/lib/java/src/main/java/org/apache/thrift/transport/TTransportException.java
+++ b/lib/java/src/main/java/org/apache/thrift/transport/TTransportException.java
@@ -32,6 +32,7 @@
   public static final int TIMED_OUT = 3;
   public static final int END_OF_FILE = 4;
   public static final int CORRUPTED_DATA = 5;
+  public static final int MESSAGE_SIZE_LIMIT = 6;
 
   protected int type_ = UNKNOWN;
 
diff --git a/lib/java/src/test/java/org/apache/thrift/protocol/ProtocolTestBase.java b/lib/java/src/test/java/org/apache/thrift/protocol/ProtocolTestBase.java
index 455f9e8..45d3db2 100644
--- a/lib/java/src/test/java/org/apache/thrift/protocol/ProtocolTestBase.java
+++ b/lib/java/src/test/java/org/apache/thrift/protocol/ProtocolTestBase.java
@@ -554,7 +554,7 @@
       String result = testClient.recv_testString();
       System.out.println("----result: " + result);
     } catch (TException e) {
-      assertEquals("MaxMessageSize reached", e.getMessage());
+      assertEquals(TTransportException.MESSAGE_SIZE_LIMIT, ((TTransportException) e).getType());
     }
   }
 
@@ -573,7 +573,7 @@
               testClient.recv_testList();
             },
             "Limitations not achieved as expected");
-    assertEquals("MaxMessageSize reached", e.getMessage());
+    assertEquals(TTransportException.MESSAGE_SIZE_LIMIT, e.getType());
   }
 
   @Test
@@ -595,7 +595,7 @@
             },
             "Limitations not achieved as expected");
 
-    assertEquals("MaxMessageSize reached", e.getMessage());
+    assertEquals(TTransportException.MESSAGE_SIZE_LIMIT, e.getType());
   }
 
   @Test
@@ -614,6 +614,6 @@
               testClient.recv_testSet();
             },
             "Limitations not achieved as expected");
-    assertEquals("MaxMessageSize reached", e.getMessage());
+    assertEquals(TTransportException.MESSAGE_SIZE_LIMIT, e.getType());
   }
 }
diff --git a/lib/java/src/test/java/org/apache/thrift/transport/TestTByteBuffer.java b/lib/java/src/test/java/org/apache/thrift/transport/TestTByteBuffer.java
index 26ffc5d..163186a 100644
--- a/lib/java/src/test/java/org/apache/thrift/transport/TestTByteBuffer.java
+++ b/lib/java/src/test/java/org/apache/thrift/transport/TestTByteBuffer.java
@@ -52,7 +52,7 @@
         assertThrows(
             TTransportException.class,
             () -> new TByteBuffer(configSmall, ByteBuffer.allocate(100)));
-    assertEquals("MaxMessageSize reached", e.getMessage());
+    assertEquals(TTransportException.MESSAGE_SIZE_LIMIT, e.getType());
   }
 
   @Test
