2009-09-08 39 views
0

我有一個對象,說Order如果發生錯誤,它會引發ErrorOccurred事件。如果我正在運行一些代碼,那麼.aspx頁面的代碼隱藏公開Order註冊爲WithEvents,我想在運行更多代碼之前檢查是否發生了錯誤,那麼我該怎麼做?我不能簡單地檢查theOrder.ErrorOccurred。我是否必須創建一個在事件處理程序中切換的本地布爾標誌(OnErrorOccurred)?還是有更好的方法來做到這一點?錯誤處理使用事件,檢查是否發生錯誤,並作出相應的反應

謝謝!

例子:

Public WithEvents theOrder As New Order 

Public Sub DoStuff() 
    theOrder.DoSomething() 
    If theOrder.ErrorOccurred Then 
     do stuff 
    End If 
End Sub 

回答

0

這似乎是一個合理的方法。如果Order對象有很多邏輯依賴於瞭解錯誤,那麼通過使用Status字段,可以方便地與任何消費者溝通訂單狀態,而不是每個人都必須訂閱事件並跟蹤它他們自己。

或者,您可以在訂單內部跟蹤它,並在訂單處於錯誤狀態時訪問關鍵方法時拋出異常。這有一個缺點,讓你做更多的錯誤處理,但會有確保任何訂單消費者明確處理它們的優勢。

+0

是很有意義的創建爲每個類我創建一個'Error'布爾屬性? – Jason

+0

呃...沒有。但是因爲你的課程特別提高了與錯誤有關的事件,並且我假設也是圍繞什麼錯誤發生的邏輯密集型,所以它似乎是合理的。每個班都不需要這個。 – womp

0

爲什麼不使用結構化錯誤處理?

Try 
    'Code that may raise an error. 
Catch 
    'Code to handle the error. 
Finally 
    'Code to do any final clean up. 
End Try 

http://support.microsoft.com/kb/315965

這是它適用於。

如果有人打電話給DoSomething,但是他們不知道他們需要檢查ORDER.ErrorOccurred,問題可能會出現。基於DoSomething在做什麼,允許一個調用一個方法並讓它安靜地失敗可能是一個問題。

如果確實做了某件事,那就讓它失敗。如果最終確定的訂單處理..

布賴恩

0

您應該使用的是合適的工具。

錯誤應該在Try/Catch塊中作爲例外被捕獲。

如果您打電話錯誤,其他人稱之爲驗證,那麼您可以使用屬性,方法甚至事件來傳達失敗以正確驗證。

0

使用try catch塊

Try 
'try your code here 
Catch somevariablenamehere As Exception 
'use methods from Exception class to get to know the error better and how to deal with it 
Finally 
'this is optional, If you want to do something finally, like cleaning up etc. You can do here 
End Try 
'to end the Try block