找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 19381|回复: 11
打印 上一主题 下一主题

CAA : CATIA 中是如何捕捉异常的

[复制链接]
跳转到指定楼层
1
发表于 2006-1-11 15:02:16 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
各位高手,我想在CATIA 中进行异常处理,但是在CATIA中try 不能用
并且CATIA 自己的CATtry 确无论如何也得不到异常。
请各位高手指点。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
12
发表于 2006-2-3 23:07:50 | 只看该作者
CAA的“异常“并不是C++通常意义上的异常(exception),CAA不推荐用C++的异常的原因是因为,1。开销太大,2。原因难查(一个异常从里面跑到外面,可能已经经历了几层,根本就不知道是哪里出的问题),3,忘了。。。这些encycropedia上面都有。
int a = static_cast<int> pStr; 这样的异常CAA根本就不去捕捉。
CAA的异常到底是什么,到.h里查查CATTry宏是什么就知道了。
(别问我,我早就没有CAA的环境了)

>>导致程序里一大堆if...else..., 大大降低了程序的可读性。
>>设计得好了话,应该可以避免

写出来大家就明白了:
do{
  if (!success1){
     break;
  }
  if (!success2){
     break;
  }
  if (!success3){
     break;
  }
  ...
}
11
发表于 2006-2-3 23:07:03 | 只看该作者
CAA的“异常“并不是C++通常意义上的异常(exception),CAA不推荐用C++的异常的原因是因为,1。开销太大,2。原因难查(一个异常从里面跑到外面,可能已经经历了几层,根本就不知道是哪里出的问题),3,忘了。。。这些encycropedia上面都有。
int a = static_cast<int> pStr; 这样的异常CAA根本就不去捕捉。
CAA的异常到底是什么,到.h里查查CATTry宏是什么就知道了。
(别问我,我早就没有CAA的环境了)

>>导致程序里一大堆if...else..., 大大降低了程序的可读性。
>>设计得好了话,应该可以避免

写出来大家就明白了:
do{
  if (!success1){
     break;
  }
  if (!success2){
     break;
  }
  if (!success3){
     break;
  }
  ...
}
10
发表于 2006-1-17 10:01:03 | 只看该作者
很讨厌看有好几层的 if/ for嵌套的程序

设计得好了话,应该可以避免

评分

参与人数 1技术 +2 收起 理由
hick + 2 热心回答问题

查看全部评分

9
发表于 2006-1-16 20:47:17 | 只看该作者
CAA不主张用异常,因此只有很少几个API抛出异常。其结果是,若要判断一个函数是否执行正确,必须看返回值,导致程序里一大堆if...else..., 大大降低了程序的可读性。不知各位有无同感
8
发表于 2006-1-14 12:45:57 | 只看该作者
多谢cms_nuaa兄的回答!
有点不明白的,CATDocumentServices::SaveAs(.....)这个就是CAA中的函数啊,它出错应该会抛出一样的,但是实际上啥都没有就直接crash了。。。。。。。。迷惑中
7
发表于 2006-1-14 12:08:53 | 只看该作者
那怎么样能够捕捉到非CATIA 的API 抛出的异常。
我现在caa 中使用其他库的API ,此API运行错误,我想获得它抛出的异常,应该怎么做?
6
发表于 2006-1-13 12:32:06 | 只看该作者
不是所有的运行问题都会抛出异常的呀。
我的理解是,只有在API中封装的代码中有异常抛出的时候CATTry才能捕获异常。
我好像看到过,在帮助中有些API会有说明:抛出什么异常。
5
发表于 2006-1-13 12:14:58 | 只看该作者
呼叫CAA达人,acoka兄等。。。。。。。。
4
发表于 2006-1-12 12:50:04 | 只看该作者
对我也说的是这方面的意思。
我发现catia 自己定义抛出异常是可以的,
如:
      CATTry{
        pCylinder = NULL;
        if(!pCylinder){
          rc = CATReturnError(.........));
          break;
        }
  
      }CATCatch(CATError, pError){
        rc = CATReturnError(......));
        break;
      }CATEndTry;


而向这样
     CATTry{
                char *pStr = "aaa";
                int a = static_cast<int> pStr;
        }
  
      }CATCatch(CATError, pError){
        rc = CATReturnError(......));
        break;
      }CATEndTry;

这样为什么不能抛出异常。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-24 20:55 , Processed in 0.026247 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表