本文介紹了修正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