| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1081 人关注过本帖
标题:程序调试问题
只看楼主 加入收藏
kevin8888
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-5-26
收藏
得分:0 
不是对某条语句检测,我需要对整个函数检测.if(!b)能对整段函数检测吗?
2006-05-27 13:04
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

函数检查错误,用try语句是监测,用throw是争对某种错误发送错误信息给catch,直接检查整段函数的错误,是以什么标准检查错误呢(根据不同的错误信息采取不同的catch措施)。我知道的有两种错误检查错误,一种就是这样throw,还有一种就是assert();都是争对某个错误发送某条信息,这和API的消息处理是一样的原理啊,键盘信息发送给处理键盘信息的函数....
只要确定什么信息,才能争对信息做相应的处理啊~!


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-27 13:12
kevin8888
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-5-26
收藏
得分:0 

有一个C++函数(不是VC),里面有很多算法,运行时有可能出现溢出(如分母为零,求绝对值大于1的反三角函数asin等)的情况,我希望溢出时能给出提示,我试过try-catch(…),但好象不好用,能帮忙替我解决这个问题吗?你能做个试验吗?

例如:

function(double a,double b,double c,)

{

try

{

c=a/b; //b可能为零

...

}

catch(…)

{

}

}

2006-05-27 13:46
kevin8888
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-5-26
收藏
得分:0 
没人能帮忙了吗?
2006-05-27 20:25
forrestlion
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-5-17
收藏
得分:0 
LZ还是好好学学基础语法吧,你还不明白别人说的。
2006-05-30 14:36
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
kevin8888,

你直接使用 try catch 是不行的,因为C++ 没有为基本数据类型的数学运算定义过异常处理。
如果你想扑捉异常,那么你必须在代码中自己处理。 4楼的 wfgb 说的是对的。

我给你一个相对完整的代码:

[CODE]
#include <iostream>
double hmean(double a, double b);

int main()
{
double x, y, z;
std::cout<<"Enter two numbers: ";
while(std::cin>>x>>y)
{
try{
z = hmean(x, y);
}
catch(const char * s)
{
std::cout<<s<<std::endl;
std::cout<<"Enter a new pair of numbers: ";
continue;
}
std::cout<<"Harmonic mean of "<<x<<" and "<<y<<" is "<<z<<std::endl;
std::cout<<"Enter next set of numbers <q to quit>: ";
}
std::cout<<" Bye!\n";
return 0;
}

double hmean(double a, double b)
{
if(a == -b)
throw "bad hmean() arguments: a = -b not allowed";
return 2.0 * a * b / (a + b);
}
[/CODE]

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-05-30 15:28
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 

kai
为什么你的程序按一下q就可以退出来呢?


2006-05-30 15:37
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 

明白了,是不是按下任意一个字符,while里面的表达式就是false,所以就退出了

2006-05-30 15:40
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
应该不是的
这里std::cin>>x>>y中double x, y, z;
所以cin一个字符相当于结束

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-30 16:10
快速回复:程序调试问题
数据加载中...
 
   



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

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