Вы должны думать о пользователе. Сбой приложения - это последняя вещь, которую хочет пользователь.
Поэтому любая операция, которая может дать сбой, должна иметь блок try catch на уровне пользовательского интерфейса.
Не обязательно использовать try catch в каждом методе, но каждый раз, когда пользователь что-то делает, он должен иметь возможность обрабатывать общие исключения.
Это никоим образом не освобождает вас от проверки всего для предотвращения исключений в первом случае, но нет сложного приложения без ошибок, и ОС может легко добавить непредвиденные проблемы, поэтому вы должны предвидеть неожиданные и убедиться, что пользователь хочет их использовать. операция не будет потери данных, потому что приложение вылетает.
Нет необходимости позволять сбою вашего приложения, если вы перехватываете исключения, оно никогда не будет находиться в неопределенном состоянии, и пользователь ВСЕГДА не испытывает затруднений из-за сбоя.
Даже если исключение находится на самом верхнем уровне, отсутствие сбоя означает, что пользователь может быстро воспроизвести исключение или, по крайней мере, записать сообщение об ошибке и, следовательно, значительно помочь вам решить проблему.
Конечно, гораздо больше, чем просто получить сообщение об ошибке, а затем увидеть только диалог ошибки Windows или что-то в этом роде.
Вот почему вы НИКОГДА не должны быть тщеславными и думать, что в вашем приложении нет ошибок, что не гарантируется.
И это очень небольшое усилие, чтобы обернуть некоторые блоки try catch в соответствующий код и показать сообщение об ошибке / записать ошибку.
Как пользователь, я, конечно, серьезно разозлился, когда брови, офисное приложение или что-то не работает.
Если исключение настолько велико, что приложение не может продолжить работу, лучше отобразить это сообщение и сообщить пользователю, что делать (перезапустить, исправить некоторые настройки ОС, сообщить об ошибке и т. Д.), Чем просто завершить работу и все.