C++异常捕获catch执行完会结束程序问题

leonchen1225 IT民工  2013-01-24 10:15:53
在ADO编程中,连接数据库,捕获到异常之后,在catch中记录了日志之后,程序就会退出!!
求助高手帮忙解决一下怎么处理异常,才能使程序继续执行。
应用场景:当我们连接数据库调用Open方法时,如果连接失败(比如数据库被占用)try catch 机制会抛出异常,我在catch中记录了错误日志并输出到文件,之后程序就会退出。本来想在catch中想重新启动连接数据库操作的。

看了很多异常处理的例子,不知道如何才能使catch执行完后不退出程序,进行重新连接操作。希望高手帮忙...谢谢...
...全文
336 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
其实很简单:你在catch中再次open就行了。 不过我认为你要判断一下,如果是系统级错误就退出,否则,尝试连接。

try{
//ADO操作
catch(_com_error& e){
if(如果e是系统错误){
//退出
}else{
//再次尝试连接
}
}
  • 打赏
  • 举报
回复
akmm88 2013-02-05
你可以使用 RAW_开头的 封装方法, 这些RAW方法,不抛异常,可根据返回值来判断是否执行成功.
  • 打赏
  • 举报
回复
wyx100 2013-01-25
回复于: 2013-01-24 23:17:17 说明你捕获异常的位置不对。 你 try { // } 的语句太多了,不是一句两句,结果try里面的内容出错了,内存错误。 程序就死了。 建议不要大段大段代码地try try一两句就好了。
  • 打赏
  • 举报
回复
「已注销」 2013-01-24
说明你捕获异常的位置不对。 你 try { // } 的语句太多了,不是一句两句,结果try里面的内容出错了,内存错误。 程序就死了。 建议不要大段大段代码地try try一两句就好了。
  • 打赏
  • 举报
回复
zyq5945 2013-01-24
这样加异常捕获试试
try
{
//你的ADO代码
}
catch (_com_error& e)
{
CString strMsg;
strMsg.Format(_T("错误描述:%s\n错误消息%s"), 
		(LPCTSTR)e.Description(),
		(LPCTSTR)e.ErrorMessage());
AfxMessageBox(strMsg);
}
  • 打赏
  • 举报
回复
西山小月 2013-01-24
说明错误比较严重
  • 打赏
  • 举报
回复
相关推荐
发帖
数据库
加入

3957

社区成员

VC/MFC 数据库
申请成为版主
帖子事件
创建了帖子
2013-01-24 10:15
社区公告
暂无公告