возвращать сообщение ошибки с “Тров Экссептион” или “Return”?

Привет я появилось сомнение: какая форма оптимальнее возвращения сообщения в случае, что появилась ошибка? Throw Exception:

try
{
    .......
 return  cargarPersonas;
}
catch(Exception e)
{
    throw  new Exception("Mensaje.", e);
}

Return:

try
{
    .......
 return  cargarPersonas;
}
catch(Exception e)
{
    return "Mensaje: " + e.message;
}
2
задан 28.09.2016, 23:45
4 ответа

У 2 выборов есть различный конец, первая используя throw служи для того, чтобы бросить исключение в нашем приложении.

try
{
    .......
 return  cargarPersonas;
}
catch(Exception e)
{
    throw  new Exception("Mensaje.", e);
}

и второй выбор возвращает String содержа сообщение ошибки:

try
{
    .......
 return  cargarPersonas;
}
catch(Exception e)
{
    return "Mensaje: " + e.message;
}

Если то, что ты желаешь, состоит в том, чтобы возвращать только сообщение:

какая форма оптимальнее возвращения сообщения в случае, что появилась ошибка?

идеальным был бы второй выбор.

1
ответ дан 24.11.2019, 13:16

SegГєn guГ, - дают следующие рекомендации из Microsoft:

  • Избегать возвращать cГіdigos ошибки
  • Влечь за собой ошибки бросая исключений.
  • , Если происходит ошибка, в которой опасно оставаться с нею ejecuciГіn программы, должен заканчивать ее ejecuciГіn.
  • не использовать исключения для контроля нормальной разгрузки.
  • Документировать исключения.
  • не возвращать исключения mГ©todos
  • Считать использовать builders для исключений.

Между другими, которые могут, повернул в ней guГ - в чиновника.

1
ответ дан 24.11.2019, 13:16

Ясно бросать исключение. А именно, первый выбор.

У метода, который возьмется за то, чтобы подбирать исключение, будет объект Exception я завершаю со всеми Ваши свойства включая описательное сообщение.

Метод, который подберет исключение, сможет контролировать ее или вновь бросать ее на верхнем уровне, если он не может манипулировать ею.

0
ответ дан 24.11.2019, 13:16

Первый выбор более удачный в случае, если ты будешь нуждаться в том, чтобы пропагандировать ошибку в верхние слои, однако я не рекомендую тебе создавать новый объект Exception.

Недостаток второго выбора состоит в том, что ты только можешь возвращать mesaje, когда твой метод возвратит string.

То, что ты был бы должен делать:

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

if(empleado == null || empleado.nombre == null) throw new InvalidOperationException("Mensaje relacionado a objetos de empleados no inicializados");

if(empleado.id < 0) throw new InvalidOperationException(string.Format("Mensake de Id no válido: {0}", empleado.nombre));

то, что позволит тебе иметь try/catch, что только progagará ошибки:

try{ }catch{ throw; }

Что является главным образом тем же самым что:

try{ }catch(Exception exc) { throw exc; }

То, что ты не был бы должен делать:

try{ }catch(Exception exc) { throw new Exception("Mensaje"); }

Так как ты был бы sobreescribiendo ценная информация о причине исключения, и посылая только сообщение, которое конечно будет что-то как: "это побил козырем груз пользователей", не действительно имея информации о типе исключения или ясного сообщения причины ошибки.

0
ответ дан 24.11.2019, 13:16