0

「sum」という名前の smalltalk ms​​g が、配列内の要素の合計を返すようにします。

例: #(1 2 3 4 5) 合計 ----> 15

入力が #(1 2 'a' 3 5) sum の場合。実行が終了し、大きな例外ボックスが表示されます。その代わりに、メッセージを表示するだけで実行を適切に終了するにはどうすればよいでしょうか。大きな例外ウィンドウを表示したくありません。

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.

4

1 に答える 1