本文介紹了修正Pro/INTRALINK Toolkit函數(shù)返回錯誤的相關(guān)方法。
每個Pro/INTRALINK Toolkit的函數(shù)都將返回一個代碼值標(biāo)識成功或失敗。
如果函數(shù)成功完成,則返回PDM_SUCCESS。如果函數(shù)處理失敗,會返回不同的錯誤代碼,還有附加的錯誤信息,錯誤代碼和錯誤信息被放置在一個全局的錯誤堆棧中,程序在退出之前永遠(yuǎn)不會自動清除這個錯誤堆棧,所以一旦有錯誤發(fā)生時,程序必須主動去清除錯誤堆棧,否則,由于錯誤堆棧中一直非空,將導(dǎo)致之后所有的INTRALINK函數(shù)都將返回失敗。
所以,建議寫一個函數(shù),如checkError(PROERROR err),當(dāng)調(diào)用每個INTRALINK函數(shù)時,同時調(diào)用該函數(shù),如果返回錯誤,則除了顯示錯誤信息,同時還需要清空錯誤堆棧。如:
...
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( );
}
相關(guān)文章
- 2021-09-08BIM技術(shù)叢書Revit軟件應(yīng)用系列Autodesk Revit族詳解 [
- 2021-09-08全國專業(yè)技術(shù)人員計算機(jī)應(yīng)用能力考試用書 AutoCAD2004
- 2021-09-08EXCEL在工作中的應(yīng)用 制表、數(shù)據(jù)處理及宏應(yīng)用PDF下載
- 2021-08-30從零開始AutoCAD 2014中文版機(jī)械制圖基礎(chǔ)培訓(xùn)教程 [李
- 2021-08-30從零開始AutoCAD 2014中文版建筑制圖基礎(chǔ)培訓(xùn)教程 [朱
- 2021-08-30電氣CAD實(shí)例教程AutoCAD 2010中文版 [左昉 等編著] 20
- 2021-08-30電影風(fēng)暴2:Maya影像實(shí)拍與三維合成攻略PDF下載
- 2021-08-30高等院校藝術(shù)設(shè)計案例教程中文版AutoCAD 建筑設(shè)計案例
- 2021-08-29環(huán)境藝術(shù)制圖AutoCAD [徐幼光 編著] 2013年P(guān)DF下載
- 2021-08-29機(jī)械A(chǔ)utoCAD 項(xiàng)目教程 第3版 [繆希偉 主編] 2012年P(guān)DF