Αν τρέξετε το παρακάτω απλό προγραμματάκι σε μια windows forms με ένα κουμπί θα δείτε ότι το exception που ΄γίνεται raised στην
chng_RowChanged δεν πιάνεται πουθενά. AN τώρα στη θέση της chng.RowChanged+=new DataRowChangeEventHandler(chng_RowChanged); γράψετε
chng.RowChanging+=new DataRowChangeEventHandler(chng_RowChanged);
τότε το exception γίνεται caught. Any idea?
private void button1_Click(object sender, System.EventArgs e)
{
DataTable data=new DataTable();
DataSet fDS=new DataSet();
data.TableName="DATA";
data.Columns.Add ("ID",typeof(int));
data.Columns.Add ("Code",typeof(string));
fDS.Tables.Add(data);
DataRow row=data.NewRow();
row["ID"]=1;
row["CODE"]="0000";
data.Rows.Add(row);
try
{
DataTable chng=data.GetChanges(DataRowState.Added|DataRowState.Modified|DataRowState.Deleted);
chng.RowChanged+=new DataRowChangeEventHandler(chng_RowChanged);
chng.Rows[0][0]=2;
}
catch(Exception ex)
{
Debug.WriteLine("#2.Exception : "+ex.Message);
throw;
}
}
private void chng_RowChanged(object sender, DataRowChangeEventArgs e)
{
try
{
throw new Exception ("ERROR");
}
catch(Exception ex)
{
Debug.WriteLine ("#1.Exception : "+ex.Message);
throw;
}
}