新手:关于异常的问题,一题老报错,不明白

discory 2007-04-07 03:45:18
#include <iostream>

using namespace std;

//ClassDivideByZeroException to be used in eception

class DivideByZeroException
{
public:
DivideByZeroException()
:message("attempted to divide by zero"){}
const char *what() const{return message;}

private:
const char *message;
};

//Definition of function quotient.Demonstrates throwing
double quotient(int numerator, int denominator)
{
if (denominator = 0)
throw DivideByZeroException();

return static_cast <double> (numerator) / denominator;

}

//driver program
int main()
{
int number1, number2;
double result;

cout << "Enter tow integers(end-of-file to end):";

while (cin >> number1 >> number2)
{
//the try block wraps the code that way throw an
//exception and the code that should not execute
//if an exception occurs
try
{
result = quotient(number1, number2);
cout << "The quotient is: " << result << endl;
}
catch(DivideByZeroException ex)
{//exception handler
cout << "Exception occurred: " << ex.what() << '\n';
}
cout << "\nEnter two integers (end-of-file to end): ";
}

cout << endl;

//system("pause");
return 0; //terminate normally
}

这是小弟看书照书写的,但是运算结果不正常1.#INF,大家帮看看
...全文
138 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
discory 2007-04-07
  • 打赏
  • 举报
回复
o,呵呵,么注意,thx
dx30611 2007-04-07
  • 打赏
  • 举报
回复

double quotient(int numerator, int denominator)
{
if (denominator == 0) //应该是双等号
throw DivideByZeroException();

return static_cast <double> (numerator) / denominator;

}
discory 2007-04-07
  • 打赏
  • 举报
回复
help一下啊
说了动软代码生成器,同时也见过很多其他类似的工具,不过大都是英文的,以前只是看看,没有做过项目,也不想去使用。现在找工作好难,不能不多学点东西,所以就做了个东西,顺便把一些东西好好研究下,一方面锻炼自己的学习能力,另一方面也学点新东西,为以后工作做准备。动软代码生成器功能相当强大,我对软件架构这些东西呢不是很熟,听说过,但拿到实际的项目,理解起来还是有难度的。拿到这个小工具,琢磨了半天,也不知道怎么用,没办法只好从网上找了些资料,大概的熟悉了一下,看到每次自动化生成的那些代码,开始感觉还真有点害怕,也不知道怎么去用。而且对于一些设置什么,都不是很清楚。最后我决定自己搞个数据库使用一下,不懂再说。而且都有源代码,应该不难的。结果证明我的思路是正确的,的确遇到了不懂的地方,但是打开项目的源代码看看。。。结果也明白了不少。说说新手学习应该注意的吧。可能有些地方不是很详细和表述有,请大家见谅。 1.我首先只生成了1个表的简单3层架构代码,(表不是很复杂,7个字段),把这些3个文件好好看一下,代码其实很简单,虽然很长,也是以前学过的,但是要明白3个类之间的关系,看完了,我才大概了解了一点什么是所谓的3层架构。。。要注意在项目中引用相应的dll和命名空间,自动生成的代码里面都提示了的。 2.其实把一个表的搞懂了,其他的也类似了。只不过一次生成整个数据库的表时,文件很多,有点杂乱,所以头痛。不过看懂了一个表的情况,也明白了为什么要有3个文件夹(或3个项目),呵呵,就是把每层架构大代码都放在一起。。。。。 3.关于使用。数据库操作的代码都自动生成了,如此完美。。。。再就是使用你,开始就直接在项目里面使用,结果发现数据库连接,我想也是的,我都没有设置数据库连接字符串,可是一时都找不到去哪里设置。最后一步步从误的地方开始找,发现在更新数据库时,直接调用了DbHelperSQL类,代码很简单,应该就是这里面大了。然后找到项目大源代码,发现里面确实有一个数据库连接属性,需要重新设置,否则会。 4.顺便提一下一个郁闷大,就是在项目中有一个DataSet,设置的时候把连接字符串保存到 app.config文件中去了,需要重新读取出来,应该很简单的,但遇到你一些。网上也有类似大方法,但是在VS2008中好像不行了。郁闷了一会,结果我突然想到,DataSet也自动生成那些更新的代码,它也是从里面读的,应该在代码中有相应大方法的。果然,去自动生成的代码找了一下,发现你下面这行代码: string connStr = global::MobileSystem.Properties.Settings.Default.JTmobileConnectionString ; 呵呵,就是它了,后面的那个字符串就是连接字符串的名字。结果测试了一下,通过。。。。。。。应该还有很多方法读的,先学这个吧。。。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧