непонятное поведение switch
От: Аноним  
Дата: 02.02.11 20:55
Оценка:
есть следующий код:


            public static void GetError()
            {
                // check for errors
                int errorCode = BluetoothHelper.WSAGetLastError();
                WinsockError winsockError = new WinsockError();

                if (errorCode != 0)
                {
                    switch (errorCode)
                    {
                        case 10004:
                            winsockError.ErrorMessage =
                                BluetoothHelperMessages.errorMsg10004;
                            break;
                        case 10013:
                            winsockError.ErrorMessage =
                                BluetoothHelperMessages.errorMsg10013;
                            break;
                    }
                }

                if (errorCode != 0)
                {
                    winsockError.ErrorCode = errorCode;
                    throw new WinsockException(winsockError);
                }
            }


если например errorCode == 10004, то оно проходит нужный блок, устанавливает
winsockError.ErrorMessage =
BluetoothHelperMessages.errorMsg10004;
и break выкидывает не только из свича, а и вообще никакой код ниже (в данном случае:


                if (errorCode != 0)
                {
                    winsockError.ErrorCode = errorCode;
                    throw new WinsockException(winsockError);
                }


не выполняется. Почему?
Re: непонятное поведение switch
От: G0ga  
Дата: 04.02.11 08:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>есть следующий код:



А>
А>            public static void GetError()
А>            {
А>                // check for errors
А>                int errorCode = BluetoothHelper.WSAGetLastError();
А>                WinsockError winsockError = new WinsockError();

А>                if (errorCode != 0)
А>                {
А>                    switch (errorCode)
А>                    {
А>                        case 10004:
А>                            winsockError.ErrorMessage =
А>                                BluetoothHelperMessages.errorMsg10004;
А>                            break;
А>                        case 10013:
А>                            winsockError.ErrorMessage =
А>                                BluetoothHelperMessages.errorMsg10013;
А>                            break;
А>                    }
А>                }

А>                if (errorCode != 0)
А>                {
А>                    winsockError.ErrorCode = errorCode;
А>                    throw new WinsockException(winsockError);
А>                }
А>            }
А>


А>если например errorCode == 10004, то оно проходит нужный блок, устанавливает

А> winsockError.ErrorMessage =
А> BluetoothHelperMessages.errorMsg10004;
А>и break выкидывает не только из свича, а и вообще никакой код ниже (в данном случае:


А>
А>                if (errorCode != 0)
А>                {
А>                    winsockError.ErrorCode = errorCode;
А>                    throw new WinsockException(winsockError);
А>                }

А>


А> не выполняется. Почему?


Вопрос: А доходит ли программа до
break;
.
Есть подозрение на возникновение обрабатываемого Exception.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.