0
讓名爲「sum」的smalltalk msg返回數組中元素的總和。輸入異常處理無效 - SmallTalk
例如:#(1 2 3 4 5)總和----> 15
當輸入爲#(1 2 '' 3 5)之和。執行結束並顯示一個大的異常框。 取而代之的是,我們如何才能通過僅顯示消息來優雅地退出執行。我不希望顯示大的異常窗口。
sum
|sum|
sum := 0
self do: [:a | sum := sum + a]
^sum
我試着用下面的方法處理異常。但是,我注意到執行不會在無效輸入的情況下終止。
sum
|sum|
sum := 0
self do: [:a |
(a isInteger) ifFalse:[
^[Error signal] on: Exception
do: [:ex | Transcript show: 'Entered values are non-numeric. Hence comparison is not possible.']
]
sum := sum + a
]
^sum
如果下面的代碼被置於工作區中,我期望的執行,以在線路2。但是,第3行也越來越執行被終止。 | temp | temp:=#(1 2 3'as'4 5)sum。 temp:= temp * 5。