1. C# / Говнокод #5988

    +140

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    try
    {
    	client.SendData(xml);
    }
    catch(Exception e)
    {
    	string s = e.ToString();
    	if(s.Substring(0,80)=="System.InvalidOperationException: Operation not allowed on non-connected sockets")
    	{
    		client.tcpclient.Close();
    		clients.Remove(client.SessionId);
    	}
    	else if (s.Substring(0,71)=="System.IO.IOException: Unable to write data to the transport connection")
    	{
    		client.tcpclient.Close();
    		clients.Remove(client.SessionId);
    	}
    	else
    	{
    		client.tcpclient.Close();
    		clients.Remove(client.SessionId);
    	}
    }

    нестандартное определение типа исключения
    найдено в примерах кода кандидата на работу

    Запостил: mozg_raka, 15 Марта 2011

    Комментарии (21) RSS

    • Руки оторвать
      Ответить
    • круто :) субстроковый полиморфизм
      Ответить
    • Stringly typed, как говорится :)
      Ответить
    • Самая жесть в том, что если строка < 80 символов - будет ArgumentOutOfRangeException.
      Ответить
    • ну я тоже иногда проверяю текст исключения
      Ответить
      • не хуже чем
        switch(ex.Code)
        case -2689263741: break;
        Ответить
        • Такое иногда бывает нужно.

          Например: http://jna.java.net/javadoc/platform/com/sun/jna/platform/win32/Win32Exception.html
          Ответить
          • да я даже не сомневался
            а то что это ява - так это просто подарок
            бальзам для души
            Ответить
            • Ну тут дело в том, что WinAPI возвращает код ошибки, а не исключение.

              И лучшее, что может сделать библиотека, предоставляющая доступ к WinAPI - это выбрасывать исключение типа Win32Exception в случае ненулевого кода ошибки.
              Ответить
              • увы и ах, но это так
                единтсвенная альтернатива - не показывать код ошибки вообще
                но это тотальный рак мозга
                Ответить
            • справедливости ради
              public int NativeErrorCode { get; }
              http://msdn.microsoft.com/en-us/library/system.componentmodel.win32exception.nat iveerrorcode.aspx
              т.е. это наследвенная травма

              но если спросить МС - почему так?
              public int Number { get; }
              http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.numbe r.aspx
              они тоже скорее всего скажут про наследственность от SQL Server 1.0

              и, конечно же, где-то внутри ADO.NET есть хелпер, который делает p/invoke к нативной скуль либе и получает аж локализованное сообщение об ошибке
              Ответить
            • да хоть смолл-ток)) какая разница -- какой язык, если Win32API отдает коды ошибок?
              Ответить
        • сейчас прийдут и скажут что это лучше, а эксепшены--отстой.
          точно прийдут
          вот увидите
          Ответить
        • проблема, что иногда исключение классом не отличается, а только текстом
          Ответить
          • в таком случае код срочно рефакторят, пока никто не увидел этот ёбаный стыд.
            Ответить
            • такая хрень в стандартной упаковке. И т.к. я работаю с жабой, все претензии к Оракулу
              Ответить
              • > иногда исключение классом не отличается, а только текстом
                > такая хрень в стандартной упаковке

                Пример не приведёте?
                Ответить
              • а можно пример где в жабе такое?
                блох нервничает
                Ответить
          • увы им (авторам такого апи)
            мораль: так никогда не делать, даже если оборачиваешься вокруг натив либы, лучше наштамповать 100500 классов
            ибо теория гласит, что модель исключений в первую очередь горизонтальна
            Ответить
    • пиздец
      Ответить

    Добавить комментарий