代码之家  ›  专栏  ›  技术社区  ›  B.Gen.Jack.O.Neill

C#错误处理(NaN)

c#
  •  4
  • B.Gen.Jack.O.Neill  · 技术社区  · 14 年前

    现在,我的代码片段是:

    for (float value = -xaxis; value < xaxis; value += konst)
            {
                hash.Add("x", value.ToString());
                double result = 0;
                result = parser.Parse(func, hash);...
    

    现在,我试图通过异常处理来处理它,比如:

    for (float value = -xaxis; value < xaxis; value += konst)
            {
                hash.Add("x", value.ToString());
                double result = 0;
                try{
                result = parser.Parse(func, hash);
                }
                catch {
                count = false;  //just a variable I am using to draw lines
                continue; // I hoped to skip the "wrong" number parsed until I came to R+ numbers
                }...
    

    但在调试时,catch根本不执行。

    拜托,我做错什么了?谢谢。

    3 回复  |  直到 14 年前
        1
  •  12
  •   Andrew Barber Eric Lafortune    14 年前

    你说的是 parser 回报 NaN . 这不是例外,这就是 try/catch 把手。因此catch块没有异常,因此它永远不会运行。

    相反,你应该测试 result 像这样对付楠:

    if(double.IsNaN(result))...
    
        2
  •  2
  •   LukeH    14 年前

    听起来好像您的解析器正在返回 NaN , 引发异常。你可以测试 使用 the static IsNaN method :

    result = parser.Parse(func, hash);
    if (float.IsNaN(result))    // assuming that result is a float
    {
        // do something
    }
    else
    {
        // do something else
    }
    
        3
  •  2
  •   Brent Arias    14 年前

    打开时,将针对溢出和下溢抛出算术异常(而不是包装)。它可能适用于ln函数,也可能不适用于ln函数。试试看。