Многократная или одиночная попытка поймать - PullRequest
49 голосов
/ 29 декабря 2010

Я работаю над очисткой части своего кода, и я пришел к точке, когда я не был уверен, какой маршрут будет лучше.

В настоящее время у меня есть один блок try-catch для большей части моего метода, и он обрабатывает несколько отдельных исключений в конце, но я подумал, что больше блоков try-catch будет лучше только для обслуживания. Однако, разбивая код, я дошел до того, что написал несколько блоков для одного и того же типа исключения. Я вижу преимущество в написании блока для каждой части, так как могу дать более подробные сведения о том, почему это не удалось.

У меня вопрос такой ... есть ли у этого недостаток? Могут ли быть проблемы с производительностью или какой-то другой скрытый монстр, которого я не вижу?

Кроме того, каков предпочтительный способ обработки нескольких исключений в методе, существует ли отраслевой стандарт?

Просто чтобы лучше проиллюстрировать мою точку зрения, приведу псевдокод

//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
}

Ответы [ 12 ]

0 голосов
/ 29 декабря 2010

Я стараюсь по возможности избегать повторения кода.Так что, если ответ на определенный тип исключения одинаков, то перехватите его один раз.

0 голосов
/ 29 декабря 2010

Отличный вопрос.Я скажу, что вы должны использовать один блок try-catch.Мое рассуждение: если у вас есть причина разделить ваш метод на несколько блоков try-catch, вам, вероятно, следует подумать о рефакторинге вашего метода на несколько методов, каждый из которых имеет свой отдельный блок try-catch.

...