Итак, недавно я написал относительно сложное приложение, написанное на C #, которое многократно выполняет массив небольших задач.Когда я впервые запустил приложение, я понял, что большая часть набираемого мной кода является повторяющимся, и поэтому я начал инкапсулировать большую часть логики приложения в отдельные вспомогательные классы, которые я мог вызывать по мере необходимости.
Излишне говорить, что размер моего приложения (и количество кода) сократился вдвое. Но пока я проходил через это, я заметил кое-что еще в моем приложении, которое казалось повторяющимся и казалось, что его можно улучшить.
Сейчас большинство моих методов в моих вспомогательных классах либо создают HttpWebRequest
, либо выполняют операции сохранения / удаления файлов. Сказав, что мне нужно обработать возможность того, что в конечном итоге вызов не будет завершен, или файл не может быть сохранен, потому что недостаточно места, или что-то еще. Проблема, с которой я сталкиваюсь, заключается в том, что мне приходится писать операторы try / catch каждый раз, когда я вызываю один из методов. Вдобавок к этому я должен повторно ввести сообщение об ошибке (или, в конце концов, сообщение о статусе. Я также хотел бы знать, когда это удастся).
Вот что-то вроде того, что мне нужно напечатать:
try
{
ItemManager.SaveTextPost(myPostItem);
}
// Majority of the time there is more than one catch!
catch
{
//^^^Not to mention that I have to handle multiple types of exceptions
//in order to log them correctly(more catches..ugh!)
MessageBox.Show("There was an error saving the post.");
//Perform logging here as well
}
Из того, что я пришел к заключению, следующее:
Верен ли этот подход? Есть ли другой способ сделать это? Должен ли я вообще использовать try / catch в вызывающем методе? Поскольку это моя первая попытка в этом направлении, я действительно хотел бы услышать, что говорят другие, кто разбирался в этом сценарии.