让一个名为“sum”的 smalltalk msg 返回数组中元素的总和。
例如:#(1 2 3 4 5) sum ----> 15
当输入为 #(1 2 'a' 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 := #(1 2 3 'as' 4 5) 总和。温度:=温度*5。