Frage

Ich habe ein asp: Boundcolumn mit Datetime? Daten in der asp (Ich werde es Spalte X nennen): Gridview. I Schleife durch alle Zeilen im Raster und warf die .Text Eigenschaft Spalte X zu Datetime (ich brauche dies eine gewisse Kontrolle zu tun, und die Zelle Hintergrundfarbe ändern, wenn erforderlich).

Ich habe 2 Möglichkeiten:

  1. wickelt die Besetzung in try / catch ... Griff Format (bei Spalte X wird mit einigem Müll in es gemacht) ... und arbeitet nur mit gültigen Datetime-Werten.

  2. überprüfen Sie die Spalte X, um sicherzustellen, es ist im richtigen Format (wie?) vor Gehäuse, und nur, wenn Guss Format ok.

Welchen Ansatz soll ich nehmen, und warum?

Danke.

P. S. up-vote 1 für alle Erklärungen, akzeptierte Antwort für TryParse

Edit2:., Obwohl ich TryParse verwendet, ich ungehemmt die akzeptierte Antwort haben die Diskussion in Gang zu halten

Meine "gute Daten" / "schlechte Daten" Verhältnis etwa 2/1 - das bedeutet eine Menge schlechten Eingangs

Ich werde die Antwort in ein paar Tagen wieder annehmen, wenn nichts anderes kommt.

War es hilfreich?

Lösung

Sie können die 2. Option tun. DateTime.TryParse helfen können.

Andere Tipps

Ich denke, es ist ein bisschen hängt davon ab, wie oft erwarten Sie es im falschen Format sein. etwas in einem Try-Catch-Wrapping haben nicht wirklich keine Auswirkungen auf alle, wenn die Ausnahme selten angehoben wird. Aber wenn Sie erwarten, dass es angehoben werden, eine Menge, dann sollten Sie vielleicht einen Scheck, um es hinzuzufügen.

Ich würde für die zweite Option gehen. I nie Verwendung von Ausnahmen für regelmäßigen Code, denn dann kann ich mit der Visual Studio-Option ausführen "brechen in Debugger, wenn Ausnahme ausgelöst wird".

Das spart mir viel Zeit, wenn reale Probleme im Code zu identifizieren, weil der Debugger am eigentlichen Problem, anstatt woanders zu stoppen. Wenn Ausnahmen für nicht-Problematiken verwendet werden, kann ich das nicht zuverlässig tun.

Ausnahmen nehmen eine Menge von Ressourcen zu erhöhen und zu fangen. Sie vermeiden sollten sie geworfen werden zu lassen, wenn es elegantere Optionen zur Verfügung.

Eine Regel, die ich wie folgt vor:. Versuchen Sie immer, wie viele Fehler manuell, wie Sie können, und verwenden Sie Ausnahmen als letztes Mittel zu fangen

Ausnahmen haben einen Einfluss auf die Leistung.

Eine Sache zu beachten ist, dass „TryParse“ nicht unbedingt eine bessere Leistung als ein Try-Catch, die um den „Parse“.

Es hängt von Ihrer Ausfallrate. Try-Catch Auswirkungen auf die Leistung haben, obwohl die meisten von den Auswirkungen, wenn Sie scheitern. wenn Sie eine 95% Erfolgsquote jedoch haben oder sogar noch höher, und die Leistung ist eine Überlegung, dann möchten Sie vielleicht über Wickeln der Schleife in einem Try-Catch denken, so dass Sie nur Ihr Hit „versuchen“ Aussage, wenn es eine ist Versagen.

int i = 0;
List<String> prePopulated;
List<DateTime> toPopulate;

while(i < prepopulated.Length)
{
   Try
   {
      while(i < prepopulated.Length)
      {
         List<DateTime>.add(DateTime.Parse(prePopulated[i]));
         i++;
      }
   }
   Catch(Exception ex)
   {
      //log if necessary
      i++;
   }
}

Beachten Sie, dass Lösung ist nur besser, wenn Sie Ihre Daten in erster Linie sauber ist und die Leistung ist der Schlüssel. Ansonsten ist die einfachere Linie „TryParse“ ist besser.

Ich bin mit DateTime.TryParse. Ich arbeite auf einem sehr hohen Volumen Website und wir nicht zu fangen Ausnahmen in der Benutzeroberfläche erlaubt, je !, die uns Fehler zu vermeiden hilft. Wir versuchen wirklich hart, um sicherzustellen, der Code Wir nennen keine Ausnahmen werfen kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top