Csvhelper: Parsen von Fehlermeldungen

Erstellt am 3. Juli 2014  ·  3Kommentare  ·  Quelle: JoshClose/CsvHelper

Ich habe einen Pull-Request gesehen, der sich mit der Klärung von Fehlermeldungen befassen sollte, aber immer noch nicht genug Flexibilität bietet.

Derzeit muss ich so etwas schreiben, um dem Benutzer eine bessere Detailgenauigkeit über Fehler zu bieten:

``` c#
var e = neue Liste();
csvReader.Configuration.ReadingExceptionCallback = (z. B. Zeile) =>
{
foreach (var-Fehler in ex.Data.Values)
{
var info = error.ToString().Split(new[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
var-Wert = info[4].Split(':')[1].Trim();
var-Feld = info[3].Split(':')[1].Trim();
e.Add(string.Format("Wert {0} in Zeile {1}, Feld {2} konnte nicht gelesen werden.",
Wert, Zeile.Zeile, Feld));
}
};
// e zur Webseite zurückgeben (zum Beispiel als JSON)

This is relatively ok. It gives information where exactly parsing error has occured. However, as you can see, digging this information is ugly since I have to parse string to get the value and the field name. It would be nice if this information could be exposed via properties so that I could write something like this:

``` c#
csvReader.Configuration.ReadingExceptionCallback = (ex, row) =>
{
    foreach (var error in row.Errors)
    {
        e.Add(string.Format("Could not read value {0} in row {1}, field {2}.",
            error.Value, error.Row, error.FieldName));
    }
};

Aber oben ist ok ... es funktioniert. Wichtiger ist die folgende Bitte.
Es wäre auch schön, Informationen liefern zu können, WARUM das Parsing fehlgeschlagen ist.
Angenommen, ein Feld akzeptiert nur die Werte "Rot" oder "Blau", der Benutzer gibt jedoch "Gelb" ein. Wir könnten dies lösen durch:

c# // in the MyClassMap : CsvClassMap<MyClass> class Map(x => x.Color).ErrorMessage("Accepted values are 'Red' and 'Blue'"); ... // in the ReadingExceptionCallback e.Add(string.Format("Could not read value {0} in row {1}, field {2}. {3}", error.Value, error.Row, error.FieldName, error.Message));

Diese Syntax würde dem Entwickler viel Flexibilität bieten und dem Benutzer ein klares Feedback geben.

Lass mich wissen was du denkst.

feature

Hilfreichster Kommentar

Dies ist eine interessante Idee. Ich werde dies vorerst als Feature markieren und später genauer darauf eingehen.

Alle 3 Kommentare

Dies ist eine interessante Idee. Ich werde dies vorerst als Feature markieren und später genauer darauf eingehen.

möchte diese Feature-Anfrage nur unterstützen.

da ich hier bin, möchte ich mich nur kurz bedanken. CsvHelper ist auf so vielen Ebenen großartig.

In 3.0 hat das Basisobjekt CsvHelperException jetzt Eigenschaften für alle Werte. Der Rückruf gibt CsvHelperException statt Exception . 3.0 Beta ist auf NuGet.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen