我正在尝试捕获格式异常,但是程序在try块上停止,并且从未到达捕获块,代码有什么问题 请帮帮我吗?
private void txtBags_TextChanged(object sender, EventArgs e)
{
if (txtBags.Text != "" && PackingBox.Text != "")
{
try
{
txtQty.Text = ((Convert.ToDecimal(txtBags.Text)) *
(Convert.ToDecimal(PackingBox.Text)) / 100).ToString();
}
catch (FormatException eX)
{
MessageBox.Show(eX.Message);
}
}
else
{
txtQty.Text = "";
}
}
我想捕获异常并将消息显示给用户? 请告诉我该怎么办?
答案 0 :(得分:0)
为什么要完全处理异常?为什么不通过使用TryParse
完全避免这种情况?:
if (!string.IsNullOrEmpy(txtBags.Text) && !string.IsNullOrEmpty(PackingBox.Text))
{
if (!Decimal.TryParse(txtBags.Text, out var bags))
{
// handle parse failure
return;
}
if (!Decimal.TryParse(PackingBox.Text, out var packingBox))
{
// handle parse failure
return;
}
txtQty.Text = (bags * packingBox / 100).ToString();
}
如果您不是使用Roslyn构建的,或者正在使用旧版本的C#,则可能需要事先定义变量:
decimal bags;
if (!Decimal.TryParse(txtBags.Text, out bags))
然后与PackingBox相同。