Csvhelper: تحليل رسائل الخطأ

تم إنشاؤها على ٣ يوليو ٢٠١٤  ·  3تعليقات  ·  مصدر: JoshClose/CsvHelper

لقد رأيت طلب سحب يجب أن يعالج مشكلة توضيح رسائل الخطأ ، لكنه لا يزال لا يوفر المرونة الكافية.

لا بد لي حاليًا من كتابة شيء كهذا لأوفر للمستخدم مستوى أفضل من التفاصيل حول الخطأ:

ج #
var e = قائمة جديدة() ؛
csvReader.Configuration.ReadingExceptionCallback = (مثال ، صف) =>
{
foreach (خطأ var في ex.Data.Values)
{
var info = error.ToString (). Split (new [] {"\ n"، "\ r \ n"}، StringSplitOptions.RemoveEmptyEntries) ؛
var value = info [4] .Split (':') [1] .Trim () ؛
var field = info [3] .Split (':') [1] .Trim () ؛
e.Add (string.Format) ("تعذرت قراءة القيمة {0} في الصف {1} ، الحقل {2}." ،
القيمة ، الصف ، الصف ، الحقل)) ؛
}
} ؛
// إرجاع e إلى صفحة الويب (على سبيل المثال مثل 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));
    }
};

ولكن أعلاه لا بأس به ... إنه يعمل. ما هو أكثر أهمية هو الطلب التالي.
سيكون من الجيد أيضًا أن تكون قادرًا على توفير المعلومات لماذا فشل التحليل.
لنفترض أن الحقل لا يقبل سوى القيم "الأحمر" أو "الأزرق" ، ولكن يكتب المستخدم باللون "الأصفر". يمكننا حل هذا من خلال:

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

سيوفر بناء الجملة هذا قدرًا كبيرًا من المرونة للمطور ويعطي ملاحظات واضحة للمستخدم.

دعني ارى آراءك.

feature

التعليق الأكثر فائدة

هذه فكرة تثير الاهتمام. سأضع علامة على هذا كميزة في الوقت الحالي وألقي نظرة أعمق لاحقًا.

ال 3 كومينتر

هذه فكرة تثير الاهتمام. سأضع علامة على هذا كميزة في الوقت الحالي وألقي نظرة أعمق لاحقًا.

سوف ترغب فقط في دعم طلب الميزة هذا.

منذ وجودي هنا أود فقط أن أقول شكرا بإيجاز. يعد CsvHelper رائعًا على العديد من المستويات.

في 3.0 ، يحتوي الكائن الأساسي CsvHelperException على خصائص لجميع القيمة الآن. رد الاتصال يعيد CsvHelperException بدلاً من Exception . 3.0 بيتا على NuGet.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات