Csvhelper: Mengurai pesan kesalahan

Dibuat pada 3 Jul 2014  ·  3Komentar  ·  Sumber: JoshClose/CsvHelper

Saya melihat permintaan tarik yang seharusnya mengatasi masalah klarifikasi pesan kesalahan , tetapi tetap tidak memberikan fleksibilitas yang cukup.

Saat ini saya harus menulis sesuatu seperti ini untuk memberikan kepada pengguna tingkat detail yang lebih baik tentang kesalahan:

``` c#
var e = Daftar baru();
csvReader.Configuration.ReadingExceptionCallback = (mis, baris) =>
{
foreach (kesalahan var di ex.Data.Values)
{
var info = error.ToString().Split(new[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
var nilai = info[4].Split(':')[1].Trim();
var bidang = info[3].Split(':')[1].Trim();
e.Add(string.Format("Tidak dapat membaca nilai {0} pada baris {1}, bidang {2}.",
nilai, baris.Baris, bidang));
}
};
// kembalikan e ke halaman web (misalnya sebagai 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));
    }
};

Tapi di atas tidak apa-apa ... berfungsi. Yang lebih penting adalah permintaan berikut.
Alangkah baiknya juga untuk dapat memberikan informasi MENGAPA parsing gagal.
Katakanlah sebuah bidang hanya menerima nilai "Merah" atau "Biru", tetapi pengguna mengetikkan "Kuning". Kita bisa menyelesaikan ini dengan:

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));

Sintaks ini akan memberikan banyak fleksibilitas bagi pengembang dan memberikan umpan balik yang jelas kepada pengguna.

Beri tau aku isi pikiranmu.

feature

Komentar yang paling membantu

Ini adalah ide yang menarik. Saya akan menandai ini sebagai fitur untuk saat ini dan melihat lebih dalam nanti.

Semua 3 komentar

Ini adalah ide yang menarik. Saya akan menandai ini sebagai fitur untuk saat ini dan melihat lebih dalam nanti.

hanya ingin mendukung permintaan fitur ini.

karena saya di sini, saya hanya ingin mengucapkan terima kasih secara singkat. CsvHelper sangat bagus di banyak level.

Dalam 3.0 objek CsvHelperException memiliki properti untuk semua nilai sekarang. Panggilan balik akan mengembalikan CsvHelperException alih-alih Exception . 3.0 beta ada di NuGet.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat