Не уверен, почему вы используете nav-item
здесь, но если вы хотите использовать класс btn-outline-secondary
, то вам нужно также добавить класс btn
, см. Здесь
[118 ]
Bootstrap Example
Disprofarma
Я бы обработайте его в методе Add следующим образом:
public void Add(Subject subject)
{
using (ISession session = HibernateUtil.CurrentSession)
using (ITransaction transaction = session.BeginTransaction())
{
try
{
session.Save(subject);
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
// log exception
throw;
}
}
}
В блоке catch вы должны сначала откатить транзакцию и зарегистрировать исключение. Тогда ваши варианты:
У вас нет реальных вариантов обработки исключения в этом методе. Предполагая, что пользовательский интерфейс вызывает этот метод, он должен вызывать его в своем собственном try..catch и обрабатывать его, отображая значимое сообщение об ошибке для пользователя. Вы можете выполнить свой модульный тест с помощью атрибута ExpectedException (type).
Чтобы ответить на ваш вопрос напрямую, вы должны создать свою собственную «разумную ошибку», расширив Exception, и выбросить ее с исходным исключением в качестве InnerException. Это техника исключения, которую я перечислил в (2).
У этого метода нет реальных вариантов обработки исключения. Предполагая, что пользовательский интерфейс вызывает этот метод, он должен вызывать его в своем собственном try..catch и обрабатывать его, отображая значимое сообщение об ошибке для пользователя. Вы можете выполнить свой модульный тест с помощью атрибута ExpectedException (type).Чтобы ответить на ваш вопрос напрямую, вы должны создать свою собственную «разумную ошибку», расширив Exception, и выбросить ее с исходным исключением в качестве InnerException. Это техника исключения, которую я перечислил в (2).
У этого метода нет реальных вариантов обработки исключения. Предполагая, что пользовательский интерфейс вызывает этот метод, он должен вызывать его в своем собственном try..catch и обрабатывать его, отображая значимое сообщение об ошибке для пользователя. Вы можете выполнить свой модульный тест с помощью атрибута ExpectedException (type).Чтобы ответить на ваш вопрос напрямую, вы должны создать свою собственную «разумную ошибку», расширив Exception, и выбросить ее с исходным исключением в качестве InnerException. Это техника исключения, которую я перечислил в (2).
Чтобы ответить на ваш вопрос напрямую, вы должны создать свою «разумную ошибку», расширив Exception, и выбросить ее с исходным исключением в качестве InnerException. Это техника исключения, которую я перечислил в (2).
Чтобы ответить на ваш вопрос напрямую, вы должны создать свою «разумную ошибку», расширив Exception, и выбросить ее с исходным исключением в качестве InnerException. Это техника исключения, которую я перечислил в (2).
Все исключения Nhibernate не подлежат восстановлению, вы можете вернуться к дизайну слоя приложения / данных, если вы пытаетесь восстановить из исключений nhibernate. Вы также можете взглянуть на реализацию перевода исключений в Spring.net Также ручная обработка транзакций для исключений утомительна и подвержена ошибкам, взгляните на контекстные сеансы nhibernate . Spring.net также имеет несколько хороших помощников в nhibernate.
Общий вопрос будет таким: что вы хотите сказать пользователю и кто является пользователем?
Если пользователь иногда будет другим компьютером (т. Е. Это веб-служба), то вы бы Вы хотите использовать соответствующий механизм для возврата ошибки SOAP или HTTP.
Если пользователь иногда будет каким-либо пользовательским интерфейсом, то вы можете захотеть отобразить сообщение для пользователя, но что бы вы сказали ему так он может что-то с этим сделать? Например, большинство веб-сайтов скажут: «Извините, у нас произошла непредвиденная ошибка», независимо от причины. Это потому, что обычно пользователь ничего не может сделать с ошибкой.
Но в любом случае выбор способа сказать «пользователь» зависит от уровня представления (уровня пользовательского интерфейса), а не от DAL. Возможно, вы должны обернуть исключения из DAL в другой тип исключения, но только если вы собираетесь изменить сообщение. Вам не нужен ваш собственный класс исключений, если только ваши абоненты не сделают что-то другое, если это исключение доступа к данным, а не какой-то другой тип.
Я бы, вероятно, проверил ввод перед сохранением объекта; таким образом вы можете реализовать любую проверку, которая вам нравится (например, проверить длину кода субъекта, а также тот факт, что нет никаких дубликатов), и передать пользователю значимые ошибки проверки.
Логика следующая. следует; исключения используются для обозначения исключительных обстоятельств, которые ваша программа не обслуживает. Пользователь, вводящий повторяющийся код темы в приведенном выше примере, - это то, что ваша программа должна учитывать; поэтому, вместо того, чтобы обрабатывать исключение из-за нарушения ограничения БД (что является исключительным событием и не должно происходить), вам нужно сначала обработать этот сценарий и пытаться сохранить данные только тогда, когда вы знаете, что данные, которые вы Сохраняем правильно.