本文介绍了修正Pro/INTRALINK Toolkit函数返回错误的相关方法。
每个Pro/INTRALINK Toolkit的函数都将返回一个代码值标识成功或失败。
如果函数成功完成,则返回PDM_SUCCESS。如果函数处理失败,会返回不同的错误代码,还有附加的错误信息,错误代码和错误信息被放置在一个全局的错误堆栈中,程序在退出之前永远不会自动清除这个错误堆栈,所以一旦有错误发生时,程序必须主动去清除错误堆栈,否则,由于错误堆栈中一直非空,将导致之后所有的INTRALINK函数都将返回失败。
所以,建议写一个函数,如checkError(PROERROR err),当调用每个INTRALINK函数时,同时调用该函数,如果返回错误,则除了显示错误信息,同时还需要清空错误堆栈。如:
...
err = PDMTakeLicense();
checkError(err);
...
void checkError(PTCERROR err)
{
int i, ctr = 0;
FILE * fp;
HPDMERROR errhandle;
HPDMCURSOR errstack = NULL_HPDMCURSOR;
PDM_ERROR_INFO errinfo;
//返回成功,无需处理
if (err == PDM_SUCCESS)
return;
//返回错误,获取错误堆栈,显示错误信息
err = PDMErrorGetStack( &errstack );
if (!PDM_HANDLE_IS_NULL(errstack))
{
for (PDMCursorGetNext(errstack, &errhandle); !PDM_HANDLE_IS_NULL(errhandle); PDMCursorGetNext(errstack, &errhandle))
{
ctr++;
err = PDMErrorGetDetails( errhandle, &errinfo );
printf( "For error stack %d ", ctr );
printf( " The error code is %d ", errinfo.m_error_code );
for ( i = 0; i < errinfo.m_argument_count; i++ )
{
printf( " Argument %d - %s ", i+1, errinfo.m_arguments[ i ]);
}
}
}
//输出
err = PDMErrorDumpStack( NULL );
//清空错误堆栈
err = PDMErrorClearStack( );
}
相关文章
- 2021-09-08BIM技术丛书Revit软件应用系列Autodesk Revit族详解 [
- 2021-09-08全国专业技术人员计算机应用能力考试用书 AutoCAD2004
- 2021-09-08EXCEL在工作中的应用 制表、数据处理及宏应用PDF下载
- 2021-08-30从零开始AutoCAD 2014中文版机械制图基础培训教程 [李
- 2021-08-30从零开始AutoCAD 2014中文版建筑制图基础培训教程 [朱
- 2021-08-30电气CAD实例教程AutoCAD 2010中文版 [左昉 等编著] 20
- 2021-08-30电影风暴2:Maya影像实拍与三维合成攻略PDF下载
- 2021-08-30高等院校艺术设计案例教程中文版AutoCAD 建筑设计案例
- 2021-08-29环境艺术制图AutoCAD [徐幼光 编著] 2013年PDF下载
- 2021-08-29机械AutoCAD 项目教程 第3版 [缪希伟 主编] 2012年PDF