Это действительно плохая идея, чтобы поймать все исключения. Вы ловите только то, с чем можете разумно справиться. Вы не можете обработать все исключения, так почему вы ловите это? Чтобы предотвратить трассировку стека?
Если вы не хотите, чтобы ваши пользователи видели ужасную трассировку стека, я понял, но вы действительно хотите, чтобы она умерла и ужасно умерла, чтобы что-то не испортилось.
Допустим, что служба вызвала исключение OutOfMemoryException, вы только что его перехватили и не будете знать, утечка памяти у вашего приложения, как сито, или неправильное распределение больших объектов.
Это плохо.
Если вы не хотите, чтобы ваш пользователь видел, что случилось, то вы должны изменить свой улов, чтобы сказать:
catch (Exception e)
{
//send it to yourself, log it. Just don't swallow it.
LogErrorAndEmailDevTeam(e);
throw new SaveFailedException("We're sorry. \n" +
"It's not your fault, but something bad happened.\n\n" +
"We've been notified and will fix it as soon as possible.");
}
Но еще лучше было бы позволить приложению умереть ужасной смертью вместо того, чтобы поймать это исключение, чтобы вы быстро знали, когда что-то идет не так.
Вы не хотите, чтобы ваше приложение продолжало работать в поврежденном состоянии, но именно это и делает catch (Exception)
. Вы действительно уверены, что справитесь с тем, что бросили?