C/C++异常处理
谁能帮我解释一下异常处理,我学过C/C++但是我从来就没有用过异常处理,现在想学学,在网上找了很多资料,但是写的都太难理解了,谁能介绍一下,如何使用?什么情况下使用?最好...
谁能帮我解释一下异常处理,我学过C/C++但是我从来就没有用过异常处理,现在想学学,在网上找了很多资料,但是写的都太难理解了,谁能介绍一下,如何使用?什么情况下使用?最好有代码段。在VC下运行的。
while()循环输入参数的时候后面加个.eof()是不是去掉也可以,只要输入的是三个数字就行,加上他是判断什么的?
还有就是还有其他例子吗?我感觉你这个写的太简单了,实际项目中就是这样的吗?还有没有例子,叫我看看。
while()循环怎么可能直走一次呀?加不加eof都可以多次执行。加eof还有其他用处吗? 展开
while()循环输入参数的时候后面加个.eof()是不是去掉也可以,只要输入的是三个数字就行,加上他是判断什么的?
还有就是还有其他例子吗?我感觉你这个写的太简单了,实际项目中就是这样的吗?还有没有例子,叫我看看。
while()循环怎么可能直走一次呀?加不加eof都可以多次执行。加eof还有其他用处吗? 展开
2个回答
展开全部
这个很难说清楚,基本上就是:
try
{
//.......
throw ...
}
catch()
{
//......
}
也就是一个程序段要抛出一个异常,然后要写一个相应的catch代码来捕获这个相应的异常。抛出的异常类型要与紧跟在try代码块之后的catch代码的形参相对应。一个try程序块之后可以紧跟多个catch程序块,但必须保证在try程序块中得抛出一个与之后catch代码的形参列表所匹配的异常类型。
比如说你在try代码块内抛出一个int 类型的异常,那么在紧跟其后的catch代码块的形参列表中就应该是一个int类型。最后catch代码块在捕获了这个抛出的异常后就可以对这个异常做处理,同时也可以再抛出一个异常。
下面给一个我为楼主写的例子,楼主可以看一下。这是一个求二次方程两个根的问题,里面就用到了异常的抛出与捕获。
#include<iostream>
#include<math.h>
using namespace std;
double Quadratic(double A,double B,double C,bool choose)
{
if(A)
{
if((B*B-4*A*C)<0)
throw "Error";
else
if(choose)
return ((-1)*B+sqrt(B*B-4*A*C))/(2*A);
else
return ((-1)*B-sqrt(B*B-4*A*C))/(2*A);
}
else
throw C/((-1)*B);
}
int main()
{
try
{
double A,B,C;
cout<<"Enter three number:";
while(!(cin>>A>>B>>C).eof())
{
cout<<"The answer is:"<<Quadratic(A,B,C,1)
<<"And"<<Quadratic(A,B,C,0)<<'\n';
cout<<"Enter the next three number:";
}
}
catch(char *ptr)
{
cout<<ptr<<'\n';
}
catch(double answer)
{
cout<<"The answer is:"<<answer<<'\n';
}
return 0;
}
代码可能写的不太好,看不明白的可以追问。
while(!(cin>>A>>B>>C).eof())是用来判断是否结束输入的。去掉.eof()就只能输入一次A,B,C参数了。另外这个例子也是我临时想出来的,或许不大有代表性,实际应用里的例子我现在也找不到,不好意思了
.eof()是判断数据流是否输入完毕。如果输入完毕则返回1,没有输入完毕就返回0。如果你不想用.eof()的话就把那个while循环去掉就可以了。
try
{
//.......
throw ...
}
catch()
{
//......
}
也就是一个程序段要抛出一个异常,然后要写一个相应的catch代码来捕获这个相应的异常。抛出的异常类型要与紧跟在try代码块之后的catch代码的形参相对应。一个try程序块之后可以紧跟多个catch程序块,但必须保证在try程序块中得抛出一个与之后catch代码的形参列表所匹配的异常类型。
比如说你在try代码块内抛出一个int 类型的异常,那么在紧跟其后的catch代码块的形参列表中就应该是一个int类型。最后catch代码块在捕获了这个抛出的异常后就可以对这个异常做处理,同时也可以再抛出一个异常。
下面给一个我为楼主写的例子,楼主可以看一下。这是一个求二次方程两个根的问题,里面就用到了异常的抛出与捕获。
#include<iostream>
#include<math.h>
using namespace std;
double Quadratic(double A,double B,double C,bool choose)
{
if(A)
{
if((B*B-4*A*C)<0)
throw "Error";
else
if(choose)
return ((-1)*B+sqrt(B*B-4*A*C))/(2*A);
else
return ((-1)*B-sqrt(B*B-4*A*C))/(2*A);
}
else
throw C/((-1)*B);
}
int main()
{
try
{
double A,B,C;
cout<<"Enter three number:";
while(!(cin>>A>>B>>C).eof())
{
cout<<"The answer is:"<<Quadratic(A,B,C,1)
<<"And"<<Quadratic(A,B,C,0)<<'\n';
cout<<"Enter the next three number:";
}
}
catch(char *ptr)
{
cout<<ptr<<'\n';
}
catch(double answer)
{
cout<<"The answer is:"<<answer<<'\n';
}
return 0;
}
代码可能写的不太好,看不明白的可以追问。
while(!(cin>>A>>B>>C).eof())是用来判断是否结束输入的。去掉.eof()就只能输入一次A,B,C参数了。另外这个例子也是我临时想出来的,或许不大有代表性,实际应用里的例子我现在也找不到,不好意思了
.eof()是判断数据流是否输入完毕。如果输入完毕则返回1,没有输入完毕就返回0。如果你不想用.eof()的话就把那个while循环去掉就可以了。
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询