2012-01-30 57 views
3

對於我正在處理的DNN 6.0網站,我有非常普遍的問題:一個DNN模塊中的未註冊異常會影響處理頁面上的所有其他模塊。 例如:在一個DNN模塊中出現異常會阻止處理所有其他模塊

比方說,我有DNN頁面上有兩個模塊。模塊1有按鈕,onclick事件處理程序拋出異常。 Module2只有一些標籤文本。

所以,當用戶按下Module1.button時,我們看到一個錯誤,而不是Module1,Module2不可見。

是否有可能在一個地方捕獲所有這樣的Module1異常並讓DNN在頁面上處理其他模塊? (我知道最簡單/最簡單的方法是在button.onclick中編寫try/catch塊,但是我不能在我們創建的所有模塊中實現這種方法,因爲這需要很長時間。)

回答

5

您建議正確回答。

實現try/catch塊,並利用以下功能

  • LogException() - 記錄錯誤,不加載停止模塊
  • ProcessModuleLoadException() - 記錄錯誤,停止從模塊裝載

示例代碼:

try 
{ 
    //BLAH 
} 
catch (Exception exc) //Module failed to load 
{ 
    Exceptions.ProcessModuleLoadException(this, exc); 
} 
+2

不幸的是,@ hamlin11是正確的。如果你自己沒有發現異常,DNN將徹底炸燬。沒有解決方法(我知道)在不觸及所有事件處理代碼的情況下實現這一點。你可能能夠定義一個通用函數,它需要一個委託並在'try' /'catch'塊中調用它,然後改變this.Load + = this.Page_Load'和'this.SubmitButton.Click + = this。 SubmitButton_Click'到'this.Load + =(s,a)=> HandleExceptions(s,a,this.Page_Load)'和'this.SubmitButton.Click + =(s,a)=> HandleExceptions(s,a,this .SubmitButton.Click)'。 – bdukes 2012-01-30 20:48:32