2017-03-29 7 views
0

Als Teil einer Aufgabe für meine erste Programmieraufgabe mussten wir ein Programm erstellen, das dem Benutzer sagt, wie alt sie in Tagen sind, ich habe das abgeschlossen, aber wir müssen ein verwenden versuchen/fangen. Wir haben ihnen nie nur grundlegende Konzepte wie Klassen/Variablen/Arrays beigebracht. Hier ist mein Code Ich muss etwas hinzufügen, um den Benutzer einfach zu informieren, wenn das DateTime-Objekt DateOfBirth in einem Textfeld ungültig ist und um neu zu starten, derzeit stürzt ein ungültiges DOB nur das Programm ab. Hier ist der Code, der alles berechnet.Geben Benutzer einen Fehler, wenn ungültig Datum eingegeben

private void buttonDaysOld_Click(object sender, EventArgs e) 
{ 
    DateTime DateOfBirth = new DateTime((int)comboBoxYear.SelectedItem, comboBoxMonth.SelectedIndex + 1, (int)comboBoxDay.SelectedItem); 
    TimeSpan diff = DateTime.Now - DateOfBirth; 
    int AgeInDays = (int)diff.TotalDays; 
    MessageBox.Show(textBoxName.Text+" you are "+(AgeInDays.ToString())+ " Days Old"); 
} 
+0

Ich glaube nicht, dass "Klasse" ein Grundkonzept ist. – dcg

Antwort

2

ich den Fehler bin Erraten Sie bekommen, dass Abstürze Ihre Anwendung ist ein InvalidCastException, wenn Sie versuchen, Ihre Combobox-Werte zu einem int zu werfen. Alles, was Sie tun müssen, ist, Ihren Code mit einem Versuch zu fangen und zu tun, was Sie im Catch-Teil brauchen.

try { 

    DateTime DateOfBirth = new DateTime((int)comboBoxYear.SelectedItem, comboBoxMonth.SelectedIndex + 1, (int)comboBoxDay.SelectedItem); 
    TimeSpan diff = DateTime.Now - DateOfBirth; 
    int AgeInDays = (int)diff.TotalDays; 
    MessageBox.Show(textBoxName.Text + " you are " + (AgeInDays.ToString()) + " Days Old"); 
} 
catch (InvalidCastException) 
{ 
    MessageBox.Show("Wrong Format"); 
} 

Hinweis: Sie sollten wahrscheinlich die genauen Fehler überprüfen Sie bekommen und es in der catch (your_error).

Sie können jederzeit gestellt:

catch (Exception) 

Welche alle Ausnahme abfangen würde, aber es wird nicht empfohlen, dass Sie das tun, gibt es zu diesem Thema here ein Post ist.

Wenn Sie mehrere Ausnahmen erhalten, die Sie behandeln müssen, gibt es eine große question about that, die erläutert, wie Sie damit umgehen. Sie können mehr über Try-Catch lernen und wie sie funktionieren, indem die documentation here.

+1

Das ist eine wunderbare Antwort. – jmag

0

Lesen Wenn Sie Geburtsdatum Validierung in Ihrem Programm möchten, Code sollte so aussehen soweway:

private void buttonDaysOld_Click(object sender, EventArgs e) 
{ 
    DateTime DateOfBirth; 
    try 
    { 
     DateOfBirth = new DateTime((int)comboBoxYear.SelectedItem, comboBoxMonth.SelectedIndex + 1, (int)comboBoxDay.SelectedItem); 
    } 
    catch (Exception exception) 
    { 
     MessageBox.Show(exception.Message); 
     return; 
    } 
    TimeSpan diff = DateTime.Now - DateOfBirth; 
    int AgeInDays = (int)diff.TotalDays; 
    MessageBox.Show(textBoxName.Text + " you are " + (AgeInDays.ToString()) + " Days Old"); 
} 

Wenn Sie werden wollen ein qualifizierter Software-Entwickler, empfehle ich Sie:

1) erhält Bekanntschaft mit Ausnahme Mechanismus, es ist wirklich bequeme Möglichkeit, Fehler (Ausnahmesituationen) in Ihrer Anwendung zu handhaben: https://msdn.microsoft.com/en-us/library/ms173160.aspx

2) Sie können spezielle Steuerelemente verwenden - DatePicker - um DateTime-Werte auszuwählen.

Verwandte Themen