Оператор проверки на null

Ну во-первых во втором варианте, в реальности немножко сложнее выходит:

C#Выделить код

1
2
3
4
5

using blablaNS;
...
Helper.Try(()=>{
    DoSomething();
});

Во-вторых, я вообще делаю просто: поскольку большинство ошибок пробрасывается на уровень GUI, то я просто сделал себе статический хелпер, который перехватывает события AppDomain.UnhandledException и Application.ThreadException и показывает сообщение пользователю, либо логирует ошибки. И таким образом я вообще не пишу никаких try/catch в обработчиках кнопок, меню и т.п. Те же (редкие) случаи, когда явно нужно перехватить эксепшн, пишу try/catch.

В-третьих, метод Try далеко не универсален, наверняка вы захотите то типизированный эксепшн перехватить, то finally обработать. И тогда либо все равно try/catch, либо придется писать всякие перегрузки метода Try и в него снова передавать дополнительные Action и все это с кучей скобочек. В общем получается возни больше, чем просто try/catch.