我是C#編程的初學者。在使用表單構建應用程序時遇到小問題。我會盡力在我的能力和經驗中正確解釋它。當我試圖處理在我的Form1中實例化的Class1引起的異常時,問題得到了解決。假設我在Class1中有「public int Calc(int a,int b)」函數。在Form1中,我已經實例化了這個類來調用它的「Calc」函數。如果我想消息的錯誤(FE:除以零)我必須包裝函數調用到的try/catch元素:WinForm中的異常處理
// Form1中:
Class1 C1 = new Class1();
int a = 5;
int b = 0;
int c = 0;
try{
c = C1.Calc(a,b)
}
catch(DivideByZeroException e)
{
// some error handling code
}
...我認爲這個例子是不是適當的面嚮對象的技術,所以我不得不決定直接把try/catch語句元素到Class 1:
// Class1的:
public int Calc(int a, int b)
{
int c = 0;
try{
c = a/b;
}
catch(DivideByZeroException e)
{
// .........
}
return c;
}
...問題是,我怎樣才能獲得消息(DivideByZeroException E)爲我的形成1能夠處理它併發送消息。我不想在Form1中創建一些靜態函數,只是爲了從Class1中到達MessageBox類,因爲它沒有在適當的OOP功能和Class1的可重用性方面發揮作用。我已閱讀關於事件和委託(我理解的是簡單的指針,功能類似於C++),但它有點混亂,我沒有將這種技術應用到我的代碼中。你能否寫一個簡單的例子來指出我的正確方向。
謝謝你們
Cembo
-1這通過了可怕的錯誤的返回值是錯誤代碼。 – siride
你能解釋爲什麼這種方法可怕嗎? –
現在調用Calc的任何函數都必須明確地處理錯誤(通過打印出一條消息或類似的消息)或將它傳遞給調用者。現在整個鏈必須傳遞錯誤消息。異常允許您在適當的地方處理錯誤,而不必將它沿整個調用鏈傳遞(容易出錯且乏味)。 – siride