Меня учили использовать try / catch / finally для любых методов / классов, в которых может возникнуть несколько ошибок, и , которые вы можете обработать . Транзакции с базой данных, ввод-вывод FileSystem, потоковая передача и т. Д. Основная логика обычно не требует try / catch / finally.
Самое замечательное в try / catch / finally заключается в том, что у вас может быть несколько перехватов, чтобы вы могли создать серию обработчиков исключений для обработки очень конкретной ошибки или использовать общее исключение для перехвата любых ошибок Вы не видите прихода.
В вашем случае вы используете File.Exists, что хорошо, но, возможно, это еще одна проблема с диском, которая может вызвать другую ошибку, которую File.Exists не может обработать. Да, это логический метод, но скажите, что Файл заблокирован, и что произойдет, если вы попытаетесь написать в него? С помощью catch вы можете планировать редкий сценарий, но без try / catch / finally вы можете подвергнуть код совершенно непредвиденным условиям.