【问题标题】:How to handle Format Exception in C#如何在 C# 中处理格式异常
【发布时间】:2016-02-02 17:53:00
【问题描述】:

您好,我正在尝试制作简单的计算器,因为我是 C# 新手并且不熟悉,无论如何,当我尝试通过 try catch 处理格式异常时,当我输入一个值而不是数字时,我总是不起作用在不执行 catch 块的情况下抛出异常

try
{
  Val1 = double.Parse(opr1.Text);
  Val2 = double.Parse(opr2.Text);
  double sum = Val1 + Val2;
  label1.Text = sum.ToString();
}
catch(Exception ex //or FormatException) 
{
  label1.Text = "Please enter the proper data type";
}

在不执行 catch 块的情况下尝试转换错误值时总是出错

【问题讨论】:

  • 您是否在 IDE 中运行它? IDE 本身是否显示类似“发生异常”的消息框 - 如果是这样,只需按 F5 或继续执行代码以进入您的 catch 块(您的 IDE 可能配置为在引发异常时中断?)。
  • 转到 Debug -> Windows -> ExceptionSettings 并查看 Common Language Runtime Exceptions 以了解 FormatException 的设置,然后按照 @mybirthname 下面给出的示例进行操作
  • 我将您的代码复制粘贴到我的 Visual Studio,然后 try catch 块 DID 捕获“输入字符串的格式不正确”。例外。你能解释一下你的问题是什么吗?
  • always gives an error,然后将错误放在您的问题中。
  • 已解决,@TVOHM 就像你说谢谢 :) 和你们所有人

标签: c# exception formatexception


【解决方案1】:

这里有一种方法可以毫无例外地处理它。

bool noErrorMsg= true;

noErrorMsg &= double.TryParse(opr1.Text, out Val1);
noErrorMsg &= double.TryParse(opr2.Text, out Val2);

if(!noErrorMsg)
{
    //Error
}

如果无法解析,TryParse 将返回 false。

【讨论】:

  • 如果他添加更多字段怎么办?像 Val3,4,5,6,7,8 吗?
  • 如果字段超过 10 个,我看不出有什么问题。
  • @Stralos 如果他添加更多字段,他应该切换到数组
  • 好吧,实际上我尝试过这样的事情,它工作正常,但我想使用 try catch 方法,因为我实际上正在学习异常处理:)
  • @MohammedAhmedMohammed double.TryParse 可以在不同的情况下抛出 3 种不同的异常,因此在完美的情况下,您应该检查所有 3 种异常:ArgumentNullException、FormatException、OverflowException。捕获异常是不好的做法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 2011-06-05
  • 2020-01-29
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
相关资源
最近更新 更多