【正文】
… EXCEPTION_CATCH(TRUE) delete [] dbls。 EXCEPTION_TRY … EDGE *ent = new EDGE(… ) (ent)。 EXCEPTION_BEGIN ENTITY_LIST list。 出錯處理宏 double *dbls = new double[n]。 if(()) m_pAHDocUpdateEntity(pBody)。 result = api_subtract(pCyl,pBody)。 result = api_solid_cylinder_cone(p3,p4,(SPAposition*)NULL,pCyl)。 SPAposition p3(0,0,10)。 check_oute(result)。 api_part_start_state(depth)。 出錯處理( error handling) ?明確地指出錯誤,并跟蹤該過程中發(fā)生了些什么 (續(xù)上頁 ) ?取消注釋 API_BEGIN和 API_END ?移去 api_make_gear()前的 “ oute” ?在圖示位置在每個 api函數(shù)調(diào)用之后添加 “ check_oute(result)。 if(()) m_pAHDocUpdateEntity(pBody)。 result = api_solid_cylinder_cone(p3,p4,(SPAposition*)NULL,pCyl)。 SPAposition p3(0,0,10)。 //API_BEGIN oute result = api_make_gear(pBody)。 API_BEGIN API_END API_BEGIN API_END API_BEGIN API_END API_BEGIN API_END API_NOP_BEGIN API_NOP_END DS BB B B B B B B BB B B B B API_NOP_BEGIN和 API_NOP_END的效果和取消操作的效果一致,對應(yīng) 的兩個宏之間的所有創(chuàng)建、修改和刪除是無效的,因此用戶需要注意在該宏 對之內(nèi)的 ENTITY是否有效 出錯處理( error handling) ?可以知道 API函數(shù)調(diào)用的結(jié)果 ?oute::error_number() ?oute::ok() ?check_oute()函數(shù) ?為了創(chuàng)建穩(wěn)定的 API,這是必要的 ?調(diào)用系統(tǒng)錯誤 ?出錯處理宏 ?EXCEPTION_BEGIN, EXCEPTION_TRY, EXCEPTION_CATCH, EXCEPTION_END ?API_BEGIN, API_END 出錯處理( error handling) ?明確地指出錯誤,并跟蹤該過程中發(fā)生了些什么 ?將 api_solid_cylinder_cone()函數(shù)中的半徑參數(shù)設(shè)置為 0 ?首先注釋掉 API_BEGIN和 API_END ?運行程序,嘗試 Undo/Redo操作 int depth = 0。 result = api_subtract()。 result = api_make_gear()。 API_BEGIN API_END API_BEGIN API_END API_BEGIN API_END API_BEGIN API_END DS BB B B B B B B API_BEGIN , API_END宏 int depth = 0。 result = api_subtract()。 result = api_make_gear()。 DS BB B B B DS DS BB B B B BB B B B API_BEGIN API_END API_BEGIN API_END API_BEGIN API_END API_BEGIN , API_END宏 int depth = 0。