我想用EOleException来捕捉Oracle的异常,是通过ADO来连接Oracle数据库的,诸位达人救命阿

解决方案 »

  1.   

    OleException有ErrorCode每个ErrorCode对应不同的错误,具体你看ms的文档吧
      

  2.   

    可以下载  ADO ErrorCode 一览表,但仅供参考:
    http://download.microsoft.com/download/ado/Errors/1.0/WIN98Me/EN-US/oledberr.exe怎么说仅供参考呢?我发现很多错误讯息(E.Message) 是共享一个错误代码 (E.ErrorCode) 的,想用 if E.ErrorCode=xxx 或是 case E.ErroeCode of 做出明确的判断,那真是没辄。所以就算有了 ErrorCode 一览表,估计用处不大。还是从 E.Message 着手做判断吧。这方面的处理,我的痛苦指数仍然相当高,怎么说相当高呢?我想应该是管理架构的问题:> 有 application level 的:
    自己在 main form 可以挂个 handler 给    Application.OnException。这个 handler 我主要用来决定整个系统要继续 (显示最丑的、最原始的错误信息),还是要停了 (Terminate)。> 有 Form Level 的:
    放个 TApplicationEvents,在 Form.OnActivate 用 TApplicationEvents.Activate 把它接收 exception 的优先权拉到第一个。在 TApplicationEvents.OnException 中,能处理就处理,处理完就 CancelDispatch 一下。不能处理则 re-raise。> procedure/function Level 的:就用 try except else 区块了,能处理的用on E: SomeKnownException do 处理,处理完再 Exit、Abort、..自己决定流程。不能处理的放在 else 往外层 re-raise。这是管理学的问题,管理的权限要下放到什么层级?那得看各层有没有能力可以处理。目前我写的应用系统在这方面也很杂乱,自己看了都郁闷...你们都怎么搞定的?分享一下吧