Re: vb.net例外

看板Programming作者 (睡魔)時間18年前 (2006/12/13 23:29), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《Quota.bbs@bbs.mcu.edu.tw (換東西嚕)》之銘言: : 程式已經作了修改,雖然可以執行,但我有若干疑問。 : 以實際生活的例子來說吧 : 當我生產汽車時, : 1.如果車號小於0 以及汽油量小於0發生了錯誤,均會產生例外。 : ==> : 我的疑問是,可以將這兩種例外都放在Class CarException內嗎? : 那該怎麼寫呢? 可以都用CarException表示, 卻無法放在同一個Exception中. (除非你是指在CarException.Message中說明"錯誤車號及沒有汽油" 這樣吧, 不過那種處理方式並不合理) 不過請弄清楚以下兩點: 1) Exception的發生表明程式無法繼續處理的情況, 因此一次請只處理 一個例外情況. 2) Exception的優點是可以把錯誤資訊bubble up到合適的Handler, 請善用這一點.(見下文) : 2.如果車號與汽油量產生例外 當生產線執行show()時,應該要秀出其他訊息 : 而不是"車號是xxx"、"汽油量是xxx"這樣的訊息.. : 可否請大家協助,給我些提示,程式已經改到這裡,愈來愈像我要的程式,謝謝! : 附上原始語法: 不要在Constructor顯示MessageBox... 在Constructor中發生的問題可以用 Exception傳到呼叫Constructor的UI Method處理. (這是把Presentation 和Logic分開的原則) 另外建議 MsgBox(Message) 用 System.Window.Form.MessageBox.Show(Me, Message) 代替, 以方便轉寫成其他語言, 還有讓MessageBox可以正確地Anchor到parent上. 試改如下: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim car1 As New excar MsgBox("已生產了汽車") Dim a As Integer Dim b As Double a = Val(TextBox1.Text) b = Val(TextBox2.Text) Try car1.setCar(a, b)) MsgBox("已使車號為" & a & ",使汽油量為" & b) Catch ex As CarException MessageBox.Show(ex.Message) End Try car1.show() End Sub Public Class CarException Inherits Exception End Class Class excar Private num As Integer Private gas As Double Sub New() num = 0 gas = 0.0 End Sub Public Function setCar(ByVal n As Integer, ByVal g As Double) If (g < 0) Then Throw New CarException("請輸入大於0的數字") End If num = n gas = g End Function Public Function show() MsgBox("車號是" & num) MsgBox("汽油量是" & gas) End Function End Class -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.153.21.143
文章代碼(AID): #15W1nPcJ (Programming)
討論串 (同標題文章)
本文引述了以下文章的的內容:
18年前, 12/13
完整討論串 (本文為第 2 之 3 篇):
18年前, 12/13
文章代碼(AID): #15W1nPcJ (Programming)