我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網站首頁 > Proe教程

修正Pro/INTRALINK Toolkit函數返回錯誤的方法

時間:2011-02-24 09:39:31 來源:

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

  }