## 25.5 Das Ereignis »FillError« des »SqlDataAdapter« Sollte beim Füllen des DataSets oder der DataTable ein Fehler auftreten, löst der SqlDataAdapter das Ereignis FillError aus. Sie können das Ereignis dazu benutzen, um zum Beispiel die Ereignisursache zu protokollieren. Per Vorgabe wird nach Beendigung des Ereignisses eine Exception ausgelöst. Sie können die Ausnahme im Code behandeln, was allerdings nicht sinnvoll ist, weil dazu eigentlich schon der Ereignishandler dient. Sie haben aber auch die Möglichkeit, im Ereignishandler die Fortsetzung des Programms ohne Ausnahme zu erzwingen. Dazu übergeben Sie der Eigenschaft Continue des zweiten Parameters des Ereignishandlers mit true die entsprechende Anweisung. Im folgenden Programmbeispiel wird ein Fehler beim Füllen des DataSets ausgelöst, indem die Eigenschaft MissingMappingAction des SqlDataAdapters auf Error gesetzt wird. Im Ereignishandler wird die Folgeausnahme mit e.Continue=true unterdrückt.
    // ------------------------------------------------------------------
    // Beispiel: ...\Kapitel 25\FillErrorSample
    // ------------------------------------------------------------------
    class Program {
      static void Main(string[] args) {
        SqlConnection con = new SqlConnection();
        con.ConnectionString = "...";
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = "SELECT * FROM Products";
        DataSet ds = new DataSet();
        SqlDataAdapter da = new SqlDataAdapter();
        da.FillError += new FillErrorEventHandler(da_FillError);
        da.SelectCommand = cmd;
        da.MissingMappingAction = MissingMappingAction.Error;
        da.Fill(ds, "Artikel"); // InvalidOperationException
        Console.ReadLine();
      }
      static void da_FillError(object sender, FillErrorEventArgs e) {
        Console.WriteLine(e.Errors.Message);
        e.Continue = true;
      }
    }