Problem z wychwyceniem Exception w c#


(northwest) #1

Witam,

mam taki program:

private bool ReadSynchroHeader()

  {

    bool connected = true;

    if (Client.Connected)

    {

      NetworkStream myNetworkStream = Client.GetStream();

      try

      {

        while (CheckConnection(myNetworkStream) && connected)

        {

          Console.WriteLine("reading");

          if (myNetworkStream.CanRead && myNetworkStream != null)

          {

            byte[] myReadBuffer = new byte[1024];

            StringBuilder dane = new StringBuilder();

            int numberOfBytesRead = 0;


            do

            {

              numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length);

              dane.AppendFormat("{0}", Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead));

            }

            while (myNetworkStream.DataAvailable);

            ProcessMessage(myReadBuffer, dane);

          }

        }

      }

      catch (Exception ex)

      {

        Console.WriteLine("Klient odłączony");

        connected = false;

      }

    }

    else

    {

      Console.WriteLine("Klient odłączony");

    }

    return true;

  }

program chodzi poprawnie aż do momentu odłączenia klienta - w tym momencie powinien wychwycić Exception - a nie chce, zgłasza normalny błą Visual Studio i się wywala... wiecie może co robie nie tak??

z góry dzięki za pomoc,

pozdrawiam Northwest


(northwest) #2

błąd jest w tym miejscu:

numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length );

Nie można odczytać danych z połączenia transportowego: Nawiązane połączenie zostało przerwane przez oprogramowanie zainstalowane w komputerze-hoście.


(system) #3

Spróbuj dodać:

catch(...)

  {

   Console.WriteLine("Inny błąd");

  }