作者ericwang1017 (Eric)
看板Programming
标题Re: vb.net例外
时间Thu Dec 14 01:46:22 2006
※ 引述《[email protected] (换东西噜)》之铭言:
: 程式已经作了修改,虽然可以执行,但我有若干疑问。
: 以实际生活的例子来说吧
: 当我生产汽车时,
: 1.如果车号小於0 以及汽油量小於0发生了错误,均会产生例外。
: ==>
: 我的疑问是,可以将这两种例外都放在Class CarException内吗?
: 那该怎麽写呢?
提供我的做法,我认为应该对个别错误作特殊化,不应该用一个概跨的carException
你可以在做 errorCarNumException 与 NullOilException
分别对那两个错误的地方丢比较细的Exception
: 2.如果车号与汽油量产生例外 当生产线执行show()时,应该要秀出其他讯息
: 而不是"车号是xxx"、"汽油量是xxx"这样的讯息..
: 可否请大家协助,给我些提示,程式已经改到这里,愈来愈像我要的程式,谢谢!
: 附上原始语法:
这地方我用firefox看不太出来,帮不到你,抱歉
不过提供您几个资讯..
你的Domain object 与你的presentation Layer已经混在一起
对这个有兴趣的话,可以看一下马大师写的Patterns of Enterprise Application Architecture
第一章
Exception是一个很有趣的东西
若对Exception 有兴趣的话可以先看一下小弟拙作
http://blog.yam.com/ericwang/article/6688178
也欢迎指正
若不知道exception抓下来後要干麻的 可以看 code complete 2ed ch 9
Defensive programming 一章
供您参考
: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
: Dim car1 As New excar
: Dim a As Integer
: Dim b As Double
: a = Val(TextBox1.Text)
: b = Val(TextBox2.Text)
: car1.setCar(a, b)
: car1.show()
: End Sub
: End Class
: Public Class CarException
: Inherits Exception
: Public Sub New()
: MsgBox("请输入大於0的数字")
: End Sub
: End Class
: Class excar
: Private num As Integer
: Private gas As Double
: Sub New()
: num = 0
: gas = 0.0
: MsgBox("已生产了汽车")
: End Sub
: Public Function setCar(ByVal n As Integer, ByVal g As Double)
: MsgBox(n)
: MsgBox(g)
: Try
: If (g < 0) Then
: Throw New CarException
: End If
: num = n
: gas = g
: MsgBox("已使车号为" & num & ",使汽油量为" & gas)
: Catch ex As Exception
: MsgBox("还有其他的错误喔")
: End Try
: End Function
: Public Function show()
: MsgBox("车号是" & num)
: MsgBox("汽油量是" & gas)
: End Function
: End Class
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.96.192