我有幾十個通過COM接口公開的對象,每個對象都有很多方法,總共有幾百個方法。這些接口將業務對象從我的應用程序展示給腳本引擎。保護COM接口免受例外
我已經被賦予了保護這些方法中的每一個方法免受異常的任務(使用COM的Error()
函數來捕獲它們並返回一個錯誤,順便說一句,我找不到任何文檔,因爲這是不可能的)。就我的理解而言,這要求我在這些方法的每一個的內臟周圍添加一個try/catch。對於這幾百種方法中的每一種來說,catch塊都是相似或相同的,這些方法強烈地感染了一個問題(大量違反了DRY原則),但我想不出任何方法來避免改變每種方法。據我所知,這些方法是由COM直接調用的,沒有中間代碼,我可以用它來捕獲異常。我目前最好的想法是爲catch塊創建一個宏,但它有它自己的代碼嗅覺。任何人都可以想出更好的方法嗎?
順便說一下,我的應用程序的異常不會從std :: exception中派生出來,所以如果有一些COM自動處理標準異常的方法,它將無濟於事。而且我很遺憾不能改變現有的從std :: exception派生的異常。
看起來很有趣,但對於這個遺留系統,我認爲這將是一個不可能的巨大工作量開始使用。如果我不幸設計出一個使用COM的新系統,我會記住它。 – rmeador 2010-04-27 19:40:00