• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 关于ADO抛出异常问题

关于ADO抛出异常问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了操作系统ado有问题,ado有问题,ado,ado.net,ado.net是什么等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于ADO抛出异常问题
描述:

先贴一段代码:
inline void TESTHR(HRESULT _hr) { if FAILED(_hr) _com_issue_error(_hr); }
STDMETHODIMP CPnsDBEntry::CreateSqlTable(LPCTSTR szSql, IDispatch **ppConn)
{
// TODO: Add your implementation code here
HRESULT hr = E_FAIL;
_RecordsetPtr pSqlTable = NULL;
try 
{
TESTHR(pSqlTable.CreateInstance(__uuidof(Recordset)));
hr = pSqlTable->Open(szSql,
_variant_t((IDispatch *)m_pConnection,true), 
adOpenDynamic,
adLockOptimistic, 
adCmdText);
if(ppConn)
{
pSqlTable.AddRef();
*ppConn = pSqlTable;
}
}
catch(_com_error e)
{
                //保存到错误日志
SLog.LogExEx("In STDMETHODIMP CreateSqlTable,come error:%s,szSql:%s",e.ErrorMessage(),szSql);
hr = E_FAIL;
}
catch(...)
{
                //保存到错误日志
SLog.LogExEx("In STDMETHODIMP CreateSqlTable,unknown error,szSql:%s",szSql);
hr = E_FAIL;
}
return hr;
}
就从我的观点来讲,catch(_com_error e)应该能截获所有的错误!但是偏偏有时出现了catch(...)截获出来的错误!由于这个函数很多模块都会用到。而我又无法知道这是个什么错误,偏偏这类错误又不是必现的,导致无法定位一些模块的错误。这是我的心中刺,眼中钉。目前在网上没有找到对我有帮助的讲述。急切希望大侠们不吝赐教,万分地感谢!
注:这里所用数据库是access(2003)的,访问数据库的方式是ADO


解决方案1:

引用 4 楼 fishion 的回复:
pSqlTable忘记Release了?

智能指针不释放也是可以的。
pSqlTable.AddRef();
*ppConn = pSqlTable;
最好改为QueryInterface,但这不是引起catch(...)的原因。
没碰到过。

解决方案2:

pSqlTable忘记Release了?

解决方案3:

catch(_com_error e)应该是只捕获使用COM代码抛出的异常

解决方案4:

出现了其他异常,只能靠...来捕获

解决方案5:

有些异常是系统异常,必须靠catch(...)来捕获


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • activex中使用ado的问题!请高手解决!
  • ADO连接问题,求教高手
  • ADO连接问题
  • 请教ADO在线程中建立连接的问题
  • 关于临界区和ADO的问题
  • 关于ADO的Dll问题?请大虾指教!
  • 关于系统服务调用ADO的一个问题
  • DLL中使用ADO的问题,大家帮忙看看
  • 又一个DLL中使用ADO的问题!请大家在次帮我!
  • dll中封装ado问题

相关文章

  • 2017-06-04 用ATL编写的复合控件怎样让它能插入到word中?
  • 2017-06-05 如何在C中定义一个变量,编译到dll中,然后在应用程序中可以修改该变量,使DLL的线程可以根据变量处理,如题
  • 2017-06-04 Mp3的VBR格式是怎么回事啊,有知道的说两句。
  • 2017-06-04 CoCreateInstance返回REGDB_E_CLASSNOTREG
  • 2017-06-04 VS2010+mysqlAPI查询数据库乱码
  • 2017-06-05 大家谁有类似QQ的通讯软件源码?Sockets类的别的也可以。
  • 2017-06-04 我在com中怎样引用一个ocx控件
  • 2017-06-05 编写一个只有STRING资源的DLL,然后用WIN32编写一个程序,取得里面的资源
  • 2017-06-05 抢分(100),懂Delphi的VC程序员请进来。
  • 2017-06-04 ATL做组件时,Release版本连接问题,请大家帮忙!!100分够否??

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 急急急求助一个dll的问题
    • 寻VC比较厉害的人物,交个朋友,互相切磋。
    • [原创/探讨]Windows核心编程研究系列之一改变进程PTE
    • 有关CMSchart实时曲线显示的问题
    • ado执行存储过程捕获不了异常
    • 用VC在word中建立“索引”
    • 如何判断网页导航全部完成(使用MFC的htvmlview)
    • C中有没有什指令或程序可以一次释放所有使用中的资源
    • 我的com组件中涉及到数据库的操作在asp不可用,而在vb下一直运行正常,其他不涉及数据库的操作在asp下均工作正常,
    • MFC下ADO连接access数据库异常

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有