Куда деются искл-я вызванные соб-ем DataTable.RowChang
От: barn_czn  
Дата: 01.12.03 10:22
Оценка:
Пытаюсь сделать с помощью события DataTable.RowChanging синхранизацию изменений таблиц в DataSet на сервер:
подписываюсь на это событие для таблице где в случае неудачного коннекта генерирую исключение.
Как я понимаю должно все работать так:
после вызова MyDataTable.Rows.Add( newDataRow) возникает событие DataTable.RowChanging где происходит
создание коннекта с сервером
Но вот чудо — если в процедуре обработки события сгенерировать исключение то его ничем не поймать!!

Пример:

try
{
wsDataTable.Rows.Add(wsdrw);
}
catch
{
//НЕ ДОСТИЖИМАЯ ТОЧКА — ПОЧЕМУ НЕ ПОНИМАЮ

MessageBox.Show ("Нет соединения с сервером.","Ошибка изменения данных.",
MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
return;
}


А вот с событием DataTable.RowDeleting все как по маслу: что за глюк , весь день, блин , убил на это.
Караул!!! ПОмогите.
Re: Куда деются искл-я вызванные соб-ем DataTable.RowChang
От: rezo  
Дата: 01.12.03 17:58
Оценка:
Здравствуйте, barn_czn, Вы писали:


_>Пытаюсь сделать с помощью события DataTable.RowChanging синхранизацию изменений таблиц в DataSet на сервер:

_>подписываюсь на это событие для таблице где в случае неудачного коннекта генерирую исключение.
_>Как я понимаю должно все работать так:
_> после вызова MyDataTable.Rows.Add( newDataRow) возникает событие DataTable.RowChanging где происходит
_> создание коннекта с сервером
_>Но вот чудо — если в процедуре обработки события сгенерировать исключение то его ничем не поймать!!

            dataset11.MyTable.RowChanging +=new DataRowChangeEventHandler(MyTable_RowChanging);
            Dataset1.MyTableRow row = dataset11.MyTable.NewMyTableRow();
            try
            {
                dataset11.MyTable.AddMyTableRow(row);
            }
            catch
            {
                MessageBox.Show("Exception");
            }
            
        private void MyTable_RowChanging(object sender, DataRowChangeEventArgs e)
        {
            throw new Exception();
        }


Все отлично отрабатывает. Exception ловится. (framework 1.1)
Ты уверен что у тебя он действительно отбрасывается?
Какого типа исключение отбрасывается?
... << RSDN@Home 1.1 beta 2 >>
Re[2]: Куда деются искл-я вызванные соб-ем DataTable.RowChan
От: rezo  
Дата: 01.12.03 18:02
Оценка:
Здравствуйте, rezo, Вы писали:

Либо у тебя Exception отбрасывается в другом потоке.
... << RSDN@Home 1.1 beta 2 >>
Re[2]: Куда деются искл-я вызванные соб-ем DataTable.RowChan
От: barn_czn  
Дата: 02.12.03 05:09
Оценка:
Здравствуйте, rezo, Вы писали:

R>Здравствуйте, barn_czn, Вы писали:



_>>Пытаюсь сделать с помощью события DataTable.RowChanging синхранизацию изменений таблиц в DataSet на сервер:

_>>подписываюсь на это событие для таблице где в случае неудачного коннекта генерирую исключение.
_>>Как я понимаю должно все работать так:
_>> после вызова MyDataTable.Rows.Add( newDataRow) возникает событие DataTable.RowChanging где происходит
_>> создание коннекта с сервером
_>>Но вот чудо — если в процедуре обработки события сгенерировать исключение то его ничем не поймать!!

R>
R>            dataset11.MyTable.RowChanging +=new DataRowChangeEventHandler(MyTable_RowChanging);
R>            Dataset1.MyTableRow row = dataset11.MyTable.NewMyTableRow();
R>            try
R>            {
R>                dataset11.MyTable.AddMyTableRow(row);
R>            }
R>            catch
R>            {
R>                MessageBox.Show("Exception");
R>            }
            
R>        private void MyTable_RowChanging(object sender, DataRowChangeEventArgs e)
R>        {
R>            throw new Exception();
R>        }
R>


R>Все отлично отрабатывает. Exception ловится. (framework 1.1)

R>Ты уверен что у тебя он действительно отбрасывается?
R>Какого типа исключение отбрасывается?

Прошу прощения за ошибку: с событием RowChanging все получаеться , не получаеться с RowChanged.
Можете попробовать.
Re[3]: Куда деются искл-я вызванные соб-ем DataTable.RowChan
От: desperado_gmbh http://www.livejournal.com/users/tolstopuz
Дата: 02.12.03 08:53
Оценка:
Здравствуйте, barn_czn, Вы писали:

_>Прошу прощения за ошибку: с событием RowChanging все получаеться , не получаеться с RowChanged.

_>Можете попробовать.

Оно там специально гасится. До вызова RowChanged делается много изменений во внутренних структурах (скажем, перестройка индексов), и запоминание этих изменений для отката при исключении снизило бы производительность.

А запись на сервер, даже если не устраивает стандартный DataAdapter, лучше сделать отдельным методом. В 1.2, кстати, будет DbTable — наследник Table с методами Fill и Update, но такое можно сделать и самому.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.