标题:try-catch-finally问题
只看楼主
frankdan
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-1-9
 问题点数:0 回复次数:3 
try-catch-finally问题
本想用下面代码来实验一下try-catch-finally问题,结果当(x*x-y*y)<0时,并没有象预料中那样执行catch{}
跪求解答
static void Main()
{
double x,y;
double z=0;
x = double.Parse(Console.ReadLine());
y = double.Parse(Console.ReadLine());
try
{
z = Math.Sqrt(x*x-y*y);
Console.Write("~~~try");
}
catch
{
z = Math.Sqrt(y*y-x*x);
Console.Write("~~~catch");
}
finally
{
z = z + x;
Console.Write("~~~finally");
}
Console.WriteLine("z = {0}",z);
Console.Read();
}
搜索更多相关主题的帖子: double Console catch Math quot 
2006-01-09 16:57
风霜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:7
帖 子:242
专家分:0
注 册:2005-3-4
得分:0 

Math.Sqrt();
函数若传入负数,返回NaN
并不产生异常
所以不会进入catch中


昔日犹存, 昔日枉存. 故人尚在, 故人何在?
2006-01-09 20:14
frankdan
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-1-9
得分:0 
谢谢风霜,那如何修改可以达到预期的目的?
2006-01-10 10:17
风霜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:7
帖 子:242
专家分:0
注 册:2005-3-4
得分:0 
可以先用一个double型数值得到x*x-y*y
double z;
double sqrt=x*x-y*y;
if(sqrt>0)
{
z = Math.Sqrt(sqrt);
}
else
{
sqrt=-sqrt;
z = Math.Sqrt(sqrt);
}
(我本以为你的程序只是来用一下try catch,不好意思没及时回)

昔日犹存, 昔日枉存. 故人尚在, 故人何在?
2006-01-10 10:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-42150-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.326266 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved