【发布时间】:2018-02-13 01:15:13
【问题描述】:
我的任务是计算售价和成本价值。 我不知道有什么想法可以为异常编写一个好的编码。
Private Sub ButtonCalculate_Click(sender As Object, e As EventArgs) Handles ButtonCalculate.Click
Dim SellingPrice As Double
Dim CostValue As Double
Dim Commission As Double
Dim CommissionRate As Double = 0.2
If Me.TextBoxSellingPrice.Text <> "" Or Me.TextBoxCostValue.Text <> "" Then
Try
SellingPrice = Double.Parse(TextBoxSellingPrice.Text)
CostValue = Double.Parse(TextBoxCostValue.Text)
'Calculation
Commission = CommissionRate * (SellingPrice - CostValue)
'Display
Me.TextBoxDisplay.Text = Me.TextBoxName.Text
Me.TextBoxCommission.Text = "RM" + Commission.ToString("F2")
Catch
MessageBox.Show("Wrong Input", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Else
MessageBox.Show("Please fill your data completely", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub
输出: Figure 1
【问题讨论】:
-
coding for exceptional是指异常处理吗?如果你使用Double.TryParse(),你真的不需要异常处理程序 -
正如@Plutonix 建议的那样,您通常不应该尝试捕获一开始就可以避免的异常。在使用它之前验证用户输入,然后不能抛出异常。
TryParse方法一步完成验证和转换。 -
我的意思是
Else MessageBox.Show("Please fill your data completely", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information)可以使用 if else 概念来处理这个异常吗? -
外部检查不是异常处理——它是@jmcilhinney 提到的数据验证。如果它失败,你也可以只使用
Return,所以如果你使用TryParse,你就没有 else 或异常处理程序 - 更简单 -
这里没有必要区分空白字段和包含“Hello World”的字段。两者都不能转换为数字,因此两者都是错误的。调用
TryParse会将文本转换为有效的数字,如果无效则毫无例外地告诉您。您有两个经验丰富的开发人员告诉您在这里使用TryParse。您可能应该调查一下。
标签: vb.net