単純な例外処理
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/04 03:18 UTC 版)
「Smalltalk」の記事における「単純な例外処理」の解説
Smalltalk 以外の言語において、配列の範囲外にある配列要素の操作や、値の代入されていない連想配列の操作は、次の例のように操作の前に一旦判定を行なって例外処理するか、例外機構を利用する方法が一般的である。 | key |key := #phoneNumber.( map contain: key ) ifTrue: [ ^ map at: key ] ifFalse: [ ^ nil ]. 一方 Smalltalk では、配列の範囲外操作の様に単純で頻発するような処理では、次のように予めメッセージに例外処理をブロックとして渡してしまう方法が一般的である。 "#phoneNumber に対応する値が無ければ常に nil を返す。map 自身に #phoneNumber が追加される事はない。"^ map at:#phoneNumber ifAbsent: [ ^ nil ]. 予め例外処理をメッセージに含めることで、単純な例外処理をより簡潔なものとしている。 この方法は、Smalltalk 独自の復帰文と組み合わせる事でより柔軟な制御をする事ができる。 次の処理は、連想配列に値が見つかればそれを表示し、値が無ければ何もしないという処理であるが、処理の中断の判定と連想配列からの値の取り出しを一度のメッセージ送信だけで実現している。 | value |value := map at:#phoneNumber ifAbsent: [ ^ self ].Transcriptshow: value;cr.
※この「単純な例外処理」の解説は、「Smalltalk」の解説の一部です。
「単純な例外処理」を含む「Smalltalk」の記事については、「Smalltalk」の概要を参照ください。
- 単純な例外処理のページへのリンク