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

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

看了很多异常处理的例子,不知道如何才能使catch执行完后不退出程序,进行重新连接操作。希望高手帮忙...谢谢...
...全文
751 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
请叫我涛哥0-0 2013-02-05
  • 打赏
  • 举报
回复
其实很简单:你在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
  • 打赏
  • 举报
回复
说明错误比较严重

4,018

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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