Csvhelper: Análise de mensagens de erro

Criado em 3 jul. 2014  ·  3Comentários  ·  Fonte: JoshClose/CsvHelper

Eu vi uma solicitação de pull que deveria resolver o problema de esclarecimento de mensagens de erro , mas ainda não forneceria flexibilidade suficiente.

Atualmente, tenho que escrever algo assim para fornecer ao usuário um melhor nível de detalhes sobre o erro:

`` `c #
var e = nova lista();
csvReader.Configuration.ReadingExceptionCallback = (ex, linha) =>
{
foreach (erro var em 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 ("Não foi possível ler o valor {0} na linha {1}, campo {2}.",
valor, linha.Linha, campo));
}
};
// retorna e para a página da web (por exemplo como 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));
    }
};

Mas acima está ok ... funciona. O que é mais importante é o seguinte pedido.
Também seria bom ser capaz de fornecer informações POR QUE a análise falhou.
Digamos que um campo aceita apenas valores "Vermelho" ou "Azul", mas o usuário digita "Amarelo". Podemos resolver isso:

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

Essa sintaxe forneceria muita flexibilidade para o desenvolvedor e forneceria um feedback claro para o usuário.

Deixe-me saber a sua opinião.

feature

Comentários muito úteis

Esta é uma ideia interessante. Vou marcar isso como um recurso por enquanto e dar uma olhada mais detalhada mais tarde.

Todos 3 comentários

Esta é uma ideia interessante. Vou marcar isso como um recurso por enquanto e dar uma olhada mais detalhada mais tarde.

gostaria apenas de apoiar este pedido de recurso.

como estou aqui, gostaria de agradecer brevemente. O CsvHelper é ótimo em vários níveis.

No 3.0, o objeto CsvHelperException tem propriedades para todos os valores agora. O retorno de chamada retornará CsvHelperException vez de Exception . 3.0 beta está no NuGet.

Esta página foi útil?
0 / 5 - 0 avaliações