【发布时间】:2016-05-16 04:16:46
【问题描述】:
首先,这是我正在处理的任务,但这不是它的要求,只是我希望使用的东西。我正在尝试将 try/catch 语句与我的十进制方法一起使用。
private decimal NewCar()
{
decimal newCar = 0.00m;
try
{
newCar = decimal.Parse(vehicleTextBox.Text);
}
catch (FormatException)
{
MessageBox.Show("Invalid entry (Format Exception). \n" + "Please enter a valid decimal number.");
Keyboard.Focus(vehicleTextBox);
vehicleTextBox.SelectAll();
return;
}
catch (Exception)
{
MessageBox.Show("Invalid entry (General Exception). \n" + "Please enter a valid decimal number.");
Keyboard.Focus(vehicleTextBox);
vehicleTextBox.SelectAll();
return;
}
if (newCar < 0)
{
MessageBox.Show("Invalid entry (Negative Value). \n" + "Please enter a valid decimal number.");
Keyboard.Focus(vehicleTextBox);
vehicleTextBox.SelectAll();
return;
}
return newCar;
}
我收到一条错误消息,提示“需要一个可转换为'十进制'的类型的对象”,但如果我将 newCar 变量放在那里,或者删除 try/catch 中的返回语句,我会收到太多消息框它不会停止计算。我需要这是一种十进制方法,以便在其他计算中使用。
任何帮助表示赞赏。
【问题讨论】:
-
不要使用 try catch 来判断它是否是一个有效的输入。一般来说,这不是好的做法。改用 Decimal.TryParse ..
-
您在哪个事件中调用了 newcar 方法?你能不能也显示那个代码。而且你不能使用 return 语句从具有某种返回类型的方法返回,该语句不返回任何内容。
-
我无法让它按照我想要的方式工作,并决定在我的
calculate_button方法中使用try-catch,并在用于计算的不同方法中引用了decimal.Parse(vehicleTextBox.Text)。现在一切似乎都很好,谢谢大家的回答!