Недавно я наткнулся на код, написанный другим программистом, в котором у него было предложение catch catch внутри catch!
Пожалуйста, простите мою неспособность вставить фактический код, но то, что он сделал, было чем-то похожее на это
try
{
//ABC Operation
}
catch (ArgumentException ae)
{
try
{
//XYZ Operation
}
catch (IndexOutOfRangeException ioe)
{
//Something
}
}
Я лично считаю, что это один из самых бедных кодов, которые я когда-либо видел! По шкале от 1 до 10... как скоро, по-твоему, я должен пойти и дать ему кусочек моего разума? Или я слишком реагирую?
EDIT: То, что он на самом деле делает, заключается в том, что в уловке он выполняет некоторые другие операции, которые могут/должны выполняться при неудачной попытке первоначальной попытки. Моя проблема состоит в том, чтобы иметь чистый код и ремонтопригодность. Делегирование исключения из первого улова в другую функцию или вызывающую функцию было бы в порядке, но добавление большего количества кода, который может или не может вызывать исключение в первый улов, является тем, что я чувствовал, было не очень хорошо. Я стараюсь избегать многоуровневых операторов if-loop, я нашел это одинаково плохим.
- IvarD