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

    +964

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    try
    {
    //тут работа с файлами
    }
    catch (Exception e)
    {
    throw e;
    }

    Блок "try - передай дальше"

    Запостил: Taru4, 23 Ноября 2011

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

    • Где то я это недавно видела тут)
      Ответить
      • Встретил в проекте, с сайта не воровал=)
        Ответить
    • про rethrowing не слышали?
      да и заглушка, может быть.
      Ответить
      • Для rethrowing лучше просто throw; использовать.
        Ответить
        • да какая разница?
          Ответить
          • при throw e callstack теряется
            Ответить
            • ШАРПОПРОБЛЕМЫ
              на Java та же конструкция ничего не теряет...
              Ответить
            • >при throw e callstack теряется
              Серьёзно? А можно пруф?
              Ответить
              • static void Main(string[] args)
                        {
                            try
                            {
                                DoSomethig();
                            }
                            catch(Exception ex)
                            {
                                Console.Write(ex.StackTrace);
                            }
                        }
                
                        static void DoSomething()
                        {
                            try
                            {
                                InnerMethod();
                                
                            }catch(Exception e)
                            {
                                throw e;
                            }
                            
                        }
                        
                        static void InnerMethod()
                        {
                            throw new Exception();
                        }

                если написать так , то про InnerMethod словленный екзепшн ничего не знает
                Ответить
                • Не показатель, конечно, но моноиды решили вопрос кардинально :D
                  http://ideone.com/7sELU
                  Ответить
            • редко но порой это делается специально, в частности при переходе между границей API
              но в этом случае лучше кидать кастомное исключение
              Ответить
    • Ей, try, скажи throw, чтобы throwнул мой exception
      Ответить
    • а на php обычно пишут так:
      catch (Exception $e)
      {
      throw new Exception($e->getMessage());
      }
      Ответить
      • Хуитка, ты же понимаешь, что это не серьёзный подход?
        Ответить
      • это еще хуже
        Ответить
        • Ну да, только вот генерировать исключение умеет любой, а что его можно просто перебросить сообразит не каждый похапешник. http://www.google.com/search?q=%22throw+new+Exception($e-%3EgetMessage())%3B%22
          Ответить
          • А зачем пересылать исключение, если ты ничего нового туда не привносишь? Пусть уж лучше само летит, как ему хочется дальше, а наверху по стеку вызова уже пусть думают, что с ним делать, а если уж ты пересылаешь, то дополняй/подменяй имеющейся информацией.
            Ответить
            • можно например на одном уровне обработать частично, а далее переслать, не дополняя информацией
              Ответить
              • Если честно не приходит в голову такие ситуации, если необходимо подчистить мусор, который образовался после исключения, то можно просто использовать try { } finally { }.
                Ответить
            • try {
                 ...
              } catch(IOException e) {
                 throw;
              } catch(Exception e) {
                 // обрабатываем
              }
              Ответить
              • Вот и нашёлся пример [:
                Ответить
              • Да, спасибо. Недавно листая свой код, тоже нашел у себя подобное.
                Ответить

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