Skip to main content
EndOfStreamException Class
 

The exception that is thrown when reading is attempted past the end of a stream.

Namespace:   System.IO
Assembly:  mscorlib (in mscorlib.dll)

Inheritance Hierarchy
SystemObject
   SystemException
     SystemSystemException
       System.IOIOException
        System.IOEndOfStreamException

Syntax
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class EndOfStreamException : IOException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class EndOfStreamException : IOException
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type EndOfStreamException = 
    class
        inherit IOException
    end
<SerializableAttribute>
<ComVisibleAttribute(True)>
Public Class EndOfStreamException
	Inherits IOException
Constructors
NameDescription
System_CAPS_pubmethod EndOfStreamException

Initializes a new instance of the EndOfStreamException class with its message string set to a system-supplied message and its HRESULT set to COR_E_ENDOFSTREAM.

System_CAPS_protmethod EndOfStreamException

Initializes a new instance of the EndOfStreamException class with the specified serialization and context information.

System_CAPS_pubmethod EndOfStreamException

Initializes a new instance of the EndOfStreamException class with its message string set to message and its HRESULT set to COR_E_ENDOFSTREAM.

System_CAPS_pubmethod EndOfStreamException

Initializes a new instance of the EndOfStreamException class with a specified error message and a reference to the inner exception that is the cause of this exception.

Properties
NameDescription
System_CAPS_pubproperty

Gets a collection of key/value pairs that provide additional user-defined information about the exception.(Inherited from Exception.)

System_CAPS_pubproperty

Gets or sets a link to the help file associated with this exception.(Inherited from Exception.)

System_CAPS_pubproperty

Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.(Inherited from Exception.)

System_CAPS_pubproperty

Gets the Exception instance that caused the current exception.(Inherited from Exception.)

System_CAPS_pubproperty

Gets a message that describes the current exception.(Inherited from Exception.)

System_CAPS_pubproperty

Gets or sets the name of the application or the object that causes the error.(Inherited from Exception.)

System_CAPS_pubproperty

Gets a string representation of the immediate frames on the call stack.(Inherited from Exception.)

System_CAPS_pubproperty

Gets the method that throws the current exception.(Inherited from Exception.)

Methods
NameDescription
System_CAPS_pubmethod Equals

Determines whether the specified object is equal to the current object.(Inherited from Object.)

System_CAPS_protmethod Finalize

Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.)

System_CAPS_pubmethod GetBaseException

When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.(Inherited from Exception.)

System_CAPS_pubmethod GetHashCode

Serves as the default hash function. (Inherited from Object.)

System_CAPS_pubmethod GetObjectData

When overridden in a derived class, sets the SerializationInfo with information about the exception.(Inherited from Exception.)

System_CAPS_pubmethod GetType

Gets the runtime type of the current instance.(Inherited from Exception.)

System_CAPS_protmethod MemberwiseClone

Creates a shallow copy of the current Object.(Inherited from Object.)

System_CAPS_pubmethod ToString

Creates and returns a string representation of the current exception.(Inherited from Exception.)

Events
NameDescription
System_CAPS_protevent SerializeObjectState

Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.(Inherited from Exception.)

Remarks

EndOfStreamException uses the HRESULT COR_E_ENDOFSTREAM which has the value 0x80070026.

Examples

The following code example shows how to read and write Double data to memory by using the BinaryReader and BinaryWriter classes on top of the MemoryStream class.

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i;
        const int arrayLength = 1000;

        // Create random data to write to the stream.
        Random randomGenerator = new Random();
        double[] dataArray = new double[arrayLength];
        for(i = 0; i < arrayLength; i++)
        {
            dataArray[i] = 100.1 * randomGenerator.NextDouble();
        }

        using(BinaryWriter binWriter = 
            new BinaryWriter(new MemoryStream()))
        {
            // Write the data to the stream.
            Console.WriteLine("Writing data to the stream.");
            for(i = 0; i < arrayLength; i++)
            {
                binWriter.Write(dataArray[i]);
            }

            // Create a reader using the stream from the writer.
            using(BinaryReader binReader = 
                new BinaryReader(binWriter.BaseStream))
            {
                try
                {
                    // Return to the beginning of the stream.
                    binReader.BaseStream.Position = 0;

                    // Read and verify the data.
                    Console.WriteLine("Verifying the written data.");
                    for(i = 0; i < arrayLength; i++)
                    {
                        if(binReader.ReadDouble() != dataArray[i])
                        {
                            Console.WriteLine("Error writing data.");
                            break;
                        }
                    }
                    Console.WriteLine("The data was written " +
                        "and verified.");
                }
                catch(EndOfStreamException e)
                {
                    Console.WriteLine("Error writing data: {0}.",
                        e.GetType().Name);
                }
            }
        }
    }
}
Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim i As Integer
        Const upperBound As Integer = 1000

        ' Create random data to write to the stream.
        Dim dataArray(upperBound) As Double
        Dim randomGenerator As New Random()
        For i = 0 To upperBound
            dataArray(i) = 100.1 * randomGenerator.NextDouble()
        Next i

        Dim binWriter As New BinaryWriter(New MemoryStream())
        Try

            ' Write data to the stream.
            Console.WriteLine("Writing data to the stream.")

            For i = 0 To upperBound
                binWriter.Write(dataArray(i))
            Next i

            ' Create a reader using the stream from the writer.
            Dim binReader As New BinaryReader(binWriter.BaseStream)

            ' Return to the beginning of the stream.
            binReader.BaseStream.Position = 0

            ' Read and verify the data.
            Try
                Console.WriteLine("Verifying the written data.")
                For i = 0 To upperBound
                    If binReader.ReadDouble() <> dataArray(i) Then
                        Console.WriteLine("Error writing data.")
                        Exit For
                    End If
                Next i
                Console.WriteLine("The data was written and verified.")
            Catch ex As EndOfStreamException
                Console.WriteLine("Error writing data: {0}.", _
                    ex.GetType().Name)
            End Try
        Finally
            binWriter.Close()
        End Try

    End Sub
End Class
using namespace System;
using namespace System::IO;
int main()
{
   int i;
   const int arrayLength = 1000;

   // Create random data to write to the stream.
   array<double>^dataArray = gcnew array<double>(arrayLength);
   Random^ randomGenerator = gcnew Random;
   for ( i = 0; i < arrayLength; i++ )
   {
      dataArray[ i ] = 100.1 * randomGenerator->NextDouble();

   }
   BinaryWriter^ binWriter = gcnew BinaryWriter( gcnew MemoryStream );
   try
   {

      // Write data to the stream.
      Console::WriteLine( "Writing data to the stream." );
      i = 0;
      for ( i = 0; i < arrayLength; i++ )
      {
         binWriter->Write( dataArray[ i ] );

      }

      // Create a reader using the stream from the writer.
      BinaryReader^ binReader = gcnew BinaryReader( binWriter->BaseStream );

      // Return to the beginning of the stream.
      binReader->BaseStream->Position = 0;
      try
      {

         // Read and verify the data.
         i = 0;
         Console::WriteLine( "Verifying the written data." );
         for ( i = 0; i < arrayLength; i++ )
         {
            if ( binReader->ReadDouble() != dataArray[ i ] )
            {
               Console::WriteLine( "Error writing data." );
               break;
            }

         }
         Console::WriteLine( "The data was written and verified." );
      }
      catch ( EndOfStreamException^ e ) 
      {
         Console::WriteLine( "Error writing data: {0}.", e->GetType()->Name );
      }

   }
   finally
   {
      binWriter->Close();
   }

}
Version Information
Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top