为什么抛出的异常没有收到?

fanged 软通动力 项目经理  2003-12-27 05:25:48
练习C++的异常处理的时候写了一个程序,在命令行模式下的。作用是阅读文本。程序名是cpp.exe。本想在执行的时候如果后面的参数是help。就显示帮助,但是为什么不行呢?还请高手指教。

#include <fstream>
#include <iostream>

using namespace std;

void main(int argc,char ** argv)
{
try
{
char line[256];
if(argv[1]==NULL)
{
throw "NULL";
}

ifstream s(argv[1]);

if(s.fail())
throw argv[1];//抛出异常

while(!s.eof())
{
s.getline(line,sizeof(line));
cout<<line<<endl;
}
s.close();
}

catch(const char * s)
{
if(s=="help")//这里就不行!
{
cout<<"cpp2 [driver:][path]filename"<<endl;
exit(1);
}
else
if(s=="NULL")//这个地方能行。
{
cout<<"cpp2 [driver:][path]filename"<<endl;
exit(1);
}
cout<<"Error!"<<endl;
cout<<"The detail:"<<s<<endl;
}
}
...全文
8 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanged 2003-12-28
哎。以前看到过这样的东西,但是当时没有注意,希望以后能记住!谢谢了。
回复
Jinhao 2003-12-27
if(s=="help")//这里就不行!
s当然不等于"help"
字符串有这样比的吗??你比的是他们的地址
回复
qiaojicheng 2003-12-27
s="help"?这是什么意思呀?

strcmp(s,"help") == 0
回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告