C++的异常处理

ouleipeng 2008-11-12 11:40:39
刚学了些C++的异常,想知道一些异常的更广的内容,还有就是有哪些具体的异常.

请大家来共享下. 谢谢
...全文
165 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ronliu 2008-11-13
  • 打赏
  • 举报
回复
4楼中,
catch(int )
表示catch int型的异常吗?throw的int的具体值1有没有关系?
jia_xiaoxin 2008-11-13
  • 打赏
  • 举报
回复
异常提供了将控制权从程序的一个部分传递到另一个部分的途径,对异常的处理有3个组成部分
1.引发异常
2.捕获有处理程序的异常
3.使用try快

MFC中通过CException派生出了下面一些类
CMemoryException 内存不足
CFileException 文件异常
CArchiveException 存档/序列化异常
CNotSupportedException 响应对不支持服务的请求
CResourceException Windows 资源分配异常
CDaoException 数据库异常(DAO 类)
CDBException 数据库异常(ODBC 类)
COleException OLE 异常
COleDispatchException 调度(自动化)异常
CUserException 用消息框警告用户然后引发一般 CException 的异常
可以作为错误种类的参考
编程-鸟人-_-- 2008-11-13
  • 打赏
  • 举报
回复
up!
太乙 2008-11-13
  • 打赏
  • 举报
回复
我说的是第二卷~
ronliu 2008-11-13
  • 打赏
  • 举报
回复
感谢7楼8楼
airtrack 2008-11-13
  • 打赏
  • 举报
回复
exceptional c++
toadzw 2008-11-13
  • 打赏
  • 举报
回复
从类的构造,析构,与数据交换来把握异常
jackzhhuang 2008-11-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ronliu 的回复:]
4楼中,
catch(int )
表示catch int型的异常吗?throw的int的具体值1有没有关系?
[/Quote]

对,整型异常,有点BT,但也是很方便的。这种做法类似个个goto语句。

其实很好的写法应该用__try __finally __leave。

和1没关系,无所谓的,主要就是为了跳到catch里面而已。
lsldd 2008-11-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ronliu 的回复:]
4楼中,
catch(int )
表示catch int型的异常吗?throw的int的具体值1有没有关系?
[/Quote]
你可以简单的认为throw是个函数,1是参数,又作为参数传递给catch了.
jackzhhuang 2008-11-13
  • 打赏
  • 举报
回复
对,可以看think C++第二卷

还可以看C++ primer

都说得很详细了。

我这里简单介绍:
try
{
//可能抛出异常的代码
}
catch(异常类型)
{
//异常处理
}

以下是简单得不能再简单的例子:

try
{
int i = 0;
if (i == 0)
{
throw 1;//抛出异常,异常类型为整型,你也可以自己定义一个异常类
}
}
catch(int )//接着异常,这里接住整型类的异常(注意这里是按值传递,
//内置类型应该按值传递,自己定义的异常最好按引用传递)
{
std::cou << "error";
}


使用异常注意:
1、try是一个模块,在模块中定义的数据出了try块之后就会消失;
2、构造函数千万不能抛出任何异常,否则析构函数将不会被调用,从而有可能引起资源泄露;
3、适当的使用异常,不要滥用它,因为异常会产生很多代码,影响效率。

异常处理其中一个好处是:可以集中回收资源。比如你在try中申请很多资源,而某个语句出错要函数返回,这个时候你就要把先前的资源释放掉,如果这种出错可能很多的话,你就要写很多重复的释放代码,如果都当作异常,就可以集中在一起写了。

windows还有自己定义的__try,__catch,__except,这些不属于标准C++,详情看MSDN。

就说这么多吧,大略说了一点点,其实很不详细,还是要看书才行。
太乙 2008-11-12
  • 打赏
  • 举报
回复
think in c++第一章:异常处理!

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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