Привет я появилось сомнение: какая форма оптимальнее возвращения сообщения в случае, что появилась ошибка? 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 выборов есть различный конец, первая используя throw
служи для того, чтобы бросить исключение в нашем приложении.
try
{
.......
return cargarPersonas;
}
catch(Exception e)
{
throw new Exception("Mensaje.", e);
}
и второй выбор возвращает String содержа сообщение ошибки:
try
{
.......
return cargarPersonas;
}
catch(Exception e)
{
return "Mensaje: " + e.message;
}
Если то, что ты желаешь, состоит в том, чтобы возвращать только сообщение:
какая форма оптимальнее возвращения сообщения в случае, что появилась ошибка?
идеальным был бы второй выбор.
SegГєn guГ, - дают следующие рекомендации из Microsoft:
builders
для исключений. Между другими, которые могут, повернул в ней guГ - в чиновника.
Ясно бросать исключение. А именно, первый выбор.
У метода, который возьмется за то, чтобы подбирать исключение, будет объект Exception
я завершаю со всеми Ваши свойства включая описательное сообщение.
Метод, который подберет исключение, сможет контролировать ее или вновь бросать ее на верхнем уровне, если он не может манипулировать ею.
Первый выбор более удачный в случае, если ты будешь нуждаться в том, чтобы пропагандировать ошибку в верхние слои, однако я не рекомендую тебе создавать новый объект 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 ценная информация о причине исключения, и посылая только сообщение, которое конечно будет что-то как: "это побил козырем груз пользователей", не действительно имея информации о типе исключения или ясного сообщения причины ошибки.