关于NX 二次开发中,错误异常的处理详细介绍
关于NX 二次开发中,错误异常的处理详细介绍错误处理
1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:
(1)无效的参数输入
(2)企图创建无效的几何模型
(3)不可预料的调用顺序
(4)得不到的系统资源,比如内存或者文件访问等
所有输出均为最新。
LINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\Debug\/confirmcylinder.dll 进行写入
2 错误侦查
通常返回错误状态或者异常。
对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;
对于NX Open 通过 Try/Catch的架构进行处理
3 错误报告
(1)获取错误信息
错误信息,获取一个错误码,并有一段可读的错误消息
ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理
NXOpen 通过NXExcepion处理
(2)建立报告
需要增加信息去报告什么操作导致报错,以及如何处理
(3)报告错误
报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。
如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。
(4)错误修复
是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。
NXOpen提供的错误修复包括:
a.方法定义给于异常处理,让程序员来诊断错误
b.当方法错误的时候,可以返回NX回话和part到一个有效的状态
c.UDO进行处理,去返回曾经的状态
// ufun 的方法
int status = UF_MODL_create_block1( UF_NULLSIGN, _
corner_pts, edge_lens, &features);
//check for return value
if (status != 0)
{
//get the human readable error message
UF_get_fail_message(status, ugErrorText);
//report error to the user
UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _
&ugErrorText, 1, ..... );
//report error to syslog
UF_print_syslog("Failed to create block\n", false);
return 1;
}
status = UF_MODL_ask_feat_body(features, &blocks);
if (status != 0)
{
UF_print_syslog("Failed to get body from block\n", _
false);
return;
}
//NXOpen 的方法,以下是java代码
try
{
Session theSession =(Session)SessionFactory.get("Session");
Part workPart = theSession.parts().work();
nxopen.features.Feature nullFeatures_Feature = null;
nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;
blockFeatureBuilder1 = workPart.features(). _
createBlockFeatureBuilder(nullFeatures_Feature);
}
catch (Exception e)
{
//report error to syslog, Message property on _
exception object already has human
//readable message
theSession.Logfile().WriteLine("Failed to create _
block", + e.getMessage());
}
非常实用, 学习了,谢谢高手
页:
[1]