Обычно он не одобряет использование System.Exception, но мне интересно, если это мой единственный выбор.
У меня есть этот сценарий
- Пользователь запрашивает задачу для редактирования
- Проверка прав доступа выполнена.
- Если все в порядке, извлекается строка из базы данных
- Затем выполняется обновление задачи и обновляется столбец, чтобы сказать, что он заблокирован.
- Некоторые временные зоны применяются к этой задаче для преобразования дат в местное время.
- Задание отображается для пользователя.
Так что, если что-то случится между шагами с 1 по 4,задание все еще хорошо, поскольку оно не заблокировано.Однако если на шаге 5 произойдет сбой, и я не смогу отобразить задачу пользователю, файл будет заблокирован и будет заблокирован до тех пор, пока не будет запущено запланированное задание, чтобы принудительно разблокировать файлы, заблокированные на длительный срок.
Это своего родане идеален, так как это может быть временный сбой, и в следующий раз, когда они запросят файл, он снова может работать.Но теперь им приходится ждать (так же, как и со всеми остальными подписчиками) X минут, пока он не разблокируется автоматически.
Поэтому моей первой мыслью было использование оператора finally, но это всегда выполняется независимо от того, что мне не удалось выяснить.как правильно сказать, что файл теперь заблокирован, не беспокойтесь о его разблокировке.
Или файл заблокирован, но что-то пошло не так, разблокируйте его.Было бы хорошо, если бы у C # было утверждение, которое выполнялось только тогда, когда произошло исключение.
Поэтому моя единственная другая мысль - это исключение, что, если что-то случится, оно разблокирует его там.Единственный случай, по которому это не произойдет, это исключение SQl, поскольку нет смысла пытаться что-то разблокировать, если база данных не работает.
Конечно, я бы использовал elmah для регистрации ошибки и медленного добавления лучших типов исключений по мере ихбудет происходить.
Так у кого-нибудь есть идеи получше?