当然出错啦,Sqrt里面的值应该是要正数的,如果你的X<Y的里,X*X-Y*Y<0
所以才导致出错。

解决方案 »

  1.   

    因为你在这里做了一个异常处理,在TRY结构结束时会释放变量的值,你可以能过IF语句来控制就可以了。
      

  2.   

    只要SQRT(number)中的,number是负数,就会返回NaN
      

  3.   

    可能是你的catch快没有匹配异常类型,try,catch finally执行的顺序好像是这样的。try快中出现异常,如果异常与catch快的异常类型匹配,则执行catch快,再执行finally块。如果不匹配,并且也没有别的catch块匹配,就直接执行finally块
      

  4.   

    Math.Sqrt()函数如果接受了一个负数作参数,则会返回一个NaN(即 Not a Number),这种情况的出现不作为异常抛出,所以你的Try就无法捕获这个异常。catch中的Math.Sqrt()也就不会执行了。正确的做法是在Math.Sqrt接受参数以前,先判断参数的正负,如果是负数,则把参数调整后再传给Math.Sqrt