作为我第一次编程任务的一部分,我们需要创建一个程序,告诉用户他们几天的年龄,我已经完成了,但是我们需要使用try / catch。我们从来没有被教过任何关于它们的基本概念,比如类/变量/数组。这是我需要添加内容的代码,只需告诉用户DateTime对象DateOfBirth在文本框中是否无效并再次启动,目前无效的DOB只会导致程序崩溃。这是计算所有内容的代码。
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 :(得分:2)
当您尝试将组合框值转换为let splitAt value lst =
let rec loop l1 = function
| [] -> List.rev l1, []
| h :: t when h > value -> List.rev l1, (h :: t)
| h :: t -> loop (h :: l1) t
loop [] lst
let groupByListMaxes listMaxes numbers =
let rec loop acc lst = function
| [] -> List.rev acc
| h :: t ->
let out, lst' = splitAt h lst
loop (out :: acc) lst' t
loop [] numbers listMaxes
时,我猜测您的应用程序崩溃的错误是InvalidCastException
。所以你需要做的就是用try catch包围你的代码,并在catch部分做你需要的。
int
请注意,您应该检查您获得的确切错误并将其放入catch(your_error)。
你可以随时提出:
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");
}
哪个会捕获所有异常,但不建议您这样做,有关于该主题here的帖子。
如果您要获得需要处理的多个例外,那么就会有一个很好的question about that来解释如何处理它。您可以通过阅读documentation here.
了解有关try-catch及其工作原理的更多信息答案 1 :(得分:0)
如果您希望在您的程序中验证出生日期,那么代码应该像这样:
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");
}
如果您想成为合格的软件开发人员,我建议您:
1)熟悉Exception机制,这是处理应用程序中错误(异常情况)的非常方便的方法: https://msdn.microsoft.com/en-us/library/ms173160.aspx
2)您可以使用特殊控件 - DatePicker
- 来选择DateTime值。