Показаны сообщения с ярлыком Exception Handling. Показать все сообщения
Показаны сообщения с ярлыком Exception Handling. Показать все сообщения

среда, 2 апреля 2008 г.

Правила внятной обработки ошибок на .NET

Я довольно неравнодушно отношусь к организации обработки ошибок.

Недавно нашел одну полезную статью, правда на английском языке.

В любом случае стоит прочесть, потому как там содержится выжимка всех приемов, которые стоит использовать при программировании на .NET:

От себя добавлю, что даже я не соблюдаю все из перечисленных автором моментов.
Естественно, что это очень плохо...

суббота, 1 декабря 2007 г.

Суббота. Работа. Ужасное настроение.

Сегодня наткнулся на грабли с типизированными DataSet, на которые раньше очень часто наступал, но в последнее время этого удавалось избегать.

Видимо это связано с повышением профессионализма :)

Но сегодня как раз тот самый день. И я сижу и наблюдаю эту чертовски загадочное сообщение об ошибке:
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.

Какой constraint, какое поле, какой not null, какой уникальный, какой внешний ключ?! ....

Неужели бравые ребята в MS не имели возможности это сделать? Они же умные, не то что я...

Помогите, поделитесь опытом. Какой методологией вы пользуетесь для выявления источника проблемы? :(

Stack trace целиком, если кому интересно:

System.Data.ConstraintException: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
at System.Data.DataSet.FailedEnableConstraints()
at System.Data.DataSet.EnableConstraints()
at System.Data.DataSet.set_EnforceConstraints(Boolean value)
at System.Data.DataTable.EndLoadData()
at System.Data.Common.DbDataAdapter.FillFromReader(Object data, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)