C#错误处理(NaN)

B.G*_*ill 4 c#

我使用Patrick Lundin的Math免费解析器在C#中编写了简单的数学函数绘图仪.

现在,我的代码片段是这样的:

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

这适用于在实数上定义的函数.但是,当我想要解析仅在R +上定义的函数时,例如ln(x),自然解析器将NaN赋予结果.

现在,我尝试通过异常处理来处理它,如下所示:

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
            }...
Run Code Online (Sandbox Code Playgroud)

但这样做并不起作用,而调试时,catch根本就不会执行.

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

And*_*ber 12

你说parser回报NaN.这不是一个例外,这是一个try/catch处理.因此catch块没有异常,因此它永远不会被运行.

相反,你应该测试你的resultNaN,如下:

if(double.IsNaN(result))...
Run Code Online (Sandbox Code Playgroud)