关于使用异常处理的小问题 附源程序
本人编写计算sqrt(|x*x-y*y|)+x的值。通过try,catch,finally来实现绝对值功能。但不知为什么当输入的值为x <y时,结果显示 "z=非数值 "!
请各位朋友帮忙解释一下!
谢先!
using System;
class Test
{
static void Main()
{
double x, y, z;
x = Convert.ToDouble(Console.ReadLine());
y = Convert.ToDouble(Console.ReadLine());
z = Convert.ToDouble(Console.ReadLine());
try
{
z = Math.Sqrt(x * x - y * y);
}
catch
{
z = Math.Sqrt(y * y - x * x);
}
finally
{
z = z + x;
}
Console.WriteLine( "z={0} ", z);
Console.ReadKey();
}
}
------解决方案--------------------当x <y时
Math.Sqrt不认为是异常也就是
catch
{
z = Math.Sqrt(y * y - x * x);
}
没执行
------解决方案--------------------浮点表达式可以包含下列值集:
正零和负零。
正无穷和负无穷。
非数字值 (NaN)。
有限的非零值集。
x <y时返回非数字值 (NaN),是正常值,当然没有异常,你只有自己加判断