台灣最大程式設計社群網站
線上人數
982
 
會員總數:243984
討論主題:188418
歡迎您免費加入會員
討論區列表 >> VB.NET >> 各位會自訂錯誤類別 或是觸發事件 或是其它?
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
各位會自訂錯誤類別 或是觸發事件 或是其它?
價值 : 150 QP  點閱數:156 回應數:5

樓主

city
初學者
80 39
1269 214
發送站內信

各位前輩們好:

這裡說的[自訂錯誤類別]指的是:
自訂一個類別 然後繼承Exception
我不知道這是否有專有名詞 如果有 麻煩前輩們告知
在此 先暫稱為:自訂錯誤類別

附上程式碼:

=================================================================================



以上:
Class1裡面的AA方法
如果使用者沒有傳入Form參數(f=Nothing) 就會傳出一個錯誤訊息給Form1 或是觸發一個事件
如果使用者沒有傳入字串參數(s=Nothing) 就會傳出一個錯誤訊息給Form1 或是觸發一個事件

Form1呼叫Class1的AA方法
收到f=Nothing的錯誤訊息 就要做出某種處置(例如:顯示錯誤訊息+關閉程式)
收到s=Nothing的錯誤訊息 就要做出某種處置(例如:離開Sub)

由於f=Nothing跟s=Nothing的處置方法不同
因此需要兩個自訂錯誤類別

=================================================================================
(以下若有錯誤請指正)

Form Is Nothing 本身並沒有錯
String=Nothing 本身也沒有錯

因此.NET Framework並沒有相關的Exception類別

如果f is Nothing就要傳出錯誤訊息給Form1 必須要自訂一個錯誤類別
或是用一個不相干的錯誤類別(例如:NullReferenceException類別)丟給Form1

=================================================================================

另外一種方法是用事件+委派

在Class1裡面寫兩個事件
一個是FormIsNothing事件
一個是StringIsNothing事件

如果f Is Nothing就觸發FormIsNothing事件
s = Nothing就觸發StringIsNothing事件

Form1再來寫事件委派方法

=================================================================================

以上是我想到的兩種方法

不知道各位前輩大大們 在寫程式時 如果遇到這樣的狀況會怎麼處置?

1.自訂錯誤類別
2.事件+委派
3.其它

謝謝~~

搜尋相關Tags的文章: [ 自訂 ] , [ 錯誤 ] , [ 類別 ] ,
本篇文章發表於2019-01-15 12:06
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

city
檢舉此回應
另外問一下:

在正常情況下 Class1的AA方法應該是無權關閉Form1的Button1_Click方法吧?

例如:


若照微軟的建議方法
Class1的AA方法應該是無權關閉Form1的Button1_Click方法
是這樣沒錯吧?

還是有微軟建議的方法可以這樣做?

謝謝~~
本篇文章回覆於2019-01-15 12:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
最有價值解答

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
寫在class內的(如果是要給別人呼叫用的),一般來說是直接throw exception("form不可以是nothing...")
同一個team共同開發的話可以另外討論一套機制,

==============
講白了就是 撰寫主程式的人,必須扛下除錯,容錯的責任

再講白一點就是寫Form1的人不應該寫 Class1.AA(Nothing, Nothing)
本篇文章回覆於2019-01-15 12:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

city
檢舉此回應
To:小羊窒息

請問像這樣的情境 大大會如何處理?



以上:
Class1的AA方法裡面
程式碼區塊B 程式碼區塊D 有可能會出現錯誤
出現錯誤時就通知Form1
並由Form1來做錯誤的後續處理

Form1需知道錯誤是來自區塊B 還是區塊D
並做不同的處理

如果是大大 會如何做呢?

謝謝~~
本篇文章回覆於2019-01-15 16:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
我會使用的方式有2種...

第一種方式(就是你提到的, 自訂錯誤類別)
撰寫5個自訂的exception, 分別在錯誤A, B, C, D, E的區段,
throw 5種不同的exception

讓Form1去try catch 不同的exception, 進而做不同的處理

(這是針對class要提供給別人使用的時候, 強迫別人寫try catch...)
===========================================

第二種方式, (class只有自己會用的時候, 或是跟團隊成員喬好的時候...)
在AA內回傳錯誤代碼, 0表示無錯誤...




本篇文章回覆於2019-01-16 01:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

city
檢舉此回應
To:小羊窒息

感謝大大的說明 :)
本篇文章回覆於2019-01-16 07:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.