Я работаю над очисткой некоторых из моего кода, и я подошел к тому моменту, когда не был уверен, какой маршрут будет лучше.Несколько или одиночный Try Catch
В настоящее время у меня есть один блок catch try над большинством моего метода, и он обрабатывает несколько отдельных исключений в конце, но я решил, что больше блоков catch try будет лучше только для обслуживания. Однако, разрывая код, я подошел к точке, где я писал несколько блоков для одного и того же типа исключения. Я вижу, что вверху написано блок для каждой части, так как я могу дать больше подробностей о том, почему это не удалось.
Вопрос в этом ... есть ли недостаток в этом? Могут ли быть проблемы с производительностью или какой-либо другой скрытый монстр, которого я не вижу?
Кроме того, что является предпочтительным способом обработки нескольких исключений в методе, существует ли промышленный стандарт?
Просто, чтобы лучше проиллюстрировать мою точку зрения вот некоторые псевдо-код
//multiple try catch for same exception
try {
//some code here
} catch (MyException e) {
//specific error message here
}
try {
//some different code here
} catch (MyException e) {
//more specific error message indicating a different issue
}
Кажется, вам кажется, что вам нужно написать сообщение об ошибке для каждого вызванного исключения, рядом с точкой, в которой она была выбрана. Но почему? Часто единственной важной информацией является то, что операция в целом не удалась. – Raedwald
@ Raedwald: Мне кажется, что добавление дополнительной информации о том, почему операция не удалась, будет полезна для обслуживания людей, которые работают после меня. Я использую плагины с открытым исходным кодом, поэтому для тех, кто их не знает, я могу добавить немного больше деталей. – Shaded
Вот почему регистрация важна, затенена. Вам не нужно загружать код с конкретной обработкой ошибок, если, как предлагает Raedwalk, восстановление в любом случае безнадежно. Моя общая техника заключается в том, чтобы регистрировать все, что, по моему мнению, важно, и реконструировать Исключение. На самом деле, если ошибка безнадежна, я повторно выбрал исключение Runtime и поймал его на самом высоком уровне для окончательной очистки. –