В .NET при компиляции убирается вызов любого метода, помеченного атрибутом Conditional(константа_компиляции), если эта константа не определена. Например, при компиляции в режиме Debug, этот код вызовет ошибку и напишет об этом в консоль:| Код | [Conditional("DEBUG")] void Log(Exception ex) { Console.WriteLine(ex); } // ... try { Assert.IsTrue(false); } catch (Exception ex) { Log(ex); } |
Что самое смешное, при конфигурации Release метод Assert.IsTrue() тоже не будет вызван, поскольку он, как и Log(), помечен атрибутом Conditional. P.S. Это тем явцам, что говорили, будто атрибуты - отстой :) . P.P.S. Да шучу, шучу.
Добавлено @ 12:48 Касательно исключений: выбрасываю и ловлю их почти везде. Конечно, это выглядит несколько громоздко, но зато, чтобы определить причину ошибки, достаточно посмотреть цепочку исключений. |