В принципе, вы должны обрабатывать любую ошибку, как только это возможно - поэтому, если вы вызываете webservice, переносите все вызовы в блок try/catch и обрабатываете ошибку там - вы можете, например, записать точный ошибка, совокупность многих связанных с webservice исключений в более общем виде, DataSourceFaultException (например, имя), которое затем будет получено UI, и пользовательский интерфейс сможет легко определить, что он не может отображать запрошенную информацию, поскольку связь не удалась, и повторите попытку, уведомите пользователя или сделайте что-нибудь еще.
Однако - с длинным запуском приложения есть еще много ошибок, с которыми вам придется иметь дело. Многие из них непросто предсказать, поскольку они не обязательно связаны с каким-либо конкретным вызовом - вы можете исчерпать память, рекурсия может привести к переполнению стека, системный таймер может достичь максимального значения и начать с начала и т. Д.
Вы не должны обрабатывать эти ошибки в каждом методе, так как это будет только ухудшать код и будет подвержено ошибкам. Эти ошибки лучше всего обрабатывать с помощью события UnhandledException. Тем не менее, вы должны помнить, что, когда исключение достигает события UnhandledException, вы не можете предполагать ничего о состоянии вашего приложения - ошибка может привести к повреждению некоторого (или даже всего) внутреннего состояния. Поэтому, когда возникает такое условие, лучше всего попытаться создать журнал ошибок и изящно перезапустить приложение (не обязательно все приложение - возможно, будет возможно повторно инициализировать состояние приложения - если это так, это также действительный вариант. осознавая, что вы не сможете восстановить некоторые ошибки и в любом случае справиться с такой ситуацией).
спасибо за ваш комментарий, вы пишете «повторно инициализировать состояние приложения», это означает перезапустить приложение? –
Не обязательно, но это самый безопасный подход. Вы можете попытаться повторно инициализировать состояние без перезапуска всего приложения, но вам нужно быть очень осторожным с этим. – maciejkow
это позволяет сказать это = new myForm(); –